mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 01:55:19 +00:00
Only repaint those parts of the desktop window which need repainting
svn path=/trunk/; revision=5159
This commit is contained in:
parent
f064f64b1d
commit
24475b126e
1 changed files with 10 additions and 3 deletions
|
@ -16,7 +16,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* $Id: vis.c,v 1.1 2003/07/17 07:49:15 gvg Exp $
|
* $Id: vis.c,v 1.2 2003/07/18 20:55:21 gvg Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -198,6 +198,7 @@ VIS_ComputeVisibleRegion(PDESKTOP_OBJECT Desktop, PWINDOW_OBJECT Window,
|
||||||
return VisRgn;
|
return VisRgn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* FIXME: to be replaced by a normal window proc in CSRSS */
|
||||||
VOID STATIC FASTCALL
|
VOID STATIC FASTCALL
|
||||||
VIS_RepaintDesktop(HWND Desktop, HRGN RepaintRgn)
|
VIS_RepaintDesktop(HWND Desktop, HRGN RepaintRgn)
|
||||||
{
|
{
|
||||||
|
@ -211,13 +212,14 @@ VIS_RepaintDesktop(HWND Desktop, HRGN RepaintRgn)
|
||||||
|
|
||||||
VOID FASTCALL
|
VOID FASTCALL
|
||||||
VIS_WindowLayoutChanged(PDESKTOP_OBJECT Desktop, PWINDOW_OBJECT Window,
|
VIS_WindowLayoutChanged(PDESKTOP_OBJECT Desktop, PWINDOW_OBJECT Window,
|
||||||
HRGN UncoveredRgn)
|
HRGN NewlyExposed)
|
||||||
{
|
{
|
||||||
PWINDOW_OBJECT DesktopWindow;
|
PWINDOW_OBJECT DesktopWindow;
|
||||||
PWINDOW_OBJECT Child;
|
PWINDOW_OBJECT Child;
|
||||||
PLIST_ENTRY CurrentEntry;
|
PLIST_ENTRY CurrentEntry;
|
||||||
HRGN Uncovered;
|
HRGN Uncovered;
|
||||||
HRGN Covered;
|
HRGN Covered;
|
||||||
|
HRGN Repaint;
|
||||||
|
|
||||||
DesktopWindow = W32kGetWindowObject(Desktop->DesktopWindow);
|
DesktopWindow = W32kGetWindowObject(Desktop->DesktopWindow);
|
||||||
Uncovered = UnsafeW32kCreateRectRgnIndirect(&DesktopWindow->WindowRect);
|
Uncovered = UnsafeW32kCreateRectRgnIndirect(&DesktopWindow->WindowRect);
|
||||||
|
@ -236,7 +238,12 @@ VIS_WindowLayoutChanged(PDESKTOP_OBJECT Desktop, PWINDOW_OBJECT Window,
|
||||||
CurrentEntry = CurrentEntry->Flink;
|
CurrentEntry = CurrentEntry->Flink;
|
||||||
}
|
}
|
||||||
ExReleaseFastMutexUnsafe(&DesktopWindow->ChildrenListLock);
|
ExReleaseFastMutexUnsafe(&DesktopWindow->ChildrenListLock);
|
||||||
VIS_RepaintDesktop(DesktopWindow->Self, Uncovered);
|
|
||||||
|
Repaint = W32kCreateRectRgn(0, 0, 0, 0);
|
||||||
|
W32kCombineRgn(Repaint, NewlyExposed, Uncovered, RGN_AND);
|
||||||
|
VIS_RepaintDesktop(DesktopWindow->Self, Repaint);
|
||||||
|
W32kDeleteObject(Repaint);
|
||||||
|
|
||||||
W32kDeleteObject(Uncovered);
|
W32kDeleteObject(Uncovered);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue