summaryrefslogtreecommitdiff
path: root/canvas/source
diff options
context:
space:
mode:
authorKurt Zenker <kz@openoffice.org>2006-12-13 13:49:07 +0000
committerKurt Zenker <kz@openoffice.org>2006-12-13 13:49:07 +0000
commitcf3ddd36b71a363afe220485764a88776b1274db (patch)
tree04894118b844eb6c58d2f53363b0a83b5faedde5 /canvas/source
parentc1a79d861a281c3af8a61f9fbac4661a14091a72 (diff)
INTEGRATION: CWS presfixes09 (1.3.18); FILE MERGED
2006/10/18 14:04:59 thb 1.3.18.6: RESYNC: (1.7-1.8); FILE MERGED 2006/09/15 15:45:40 thb 1.3.18.5: RESYNC: (1.5-1.7); FILE MERGED 2006/04/20 11:15:56 thb 1.3.18.4: RESYNC: (1.4-1.5); FILE MERGED 2006/04/06 20:11:52 thb 1.3.18.3: #i63943# During VCL paint, windows have a hard clip region set (limited to the damaged area). This wreaks havoc when rendering double-buffered content or animations, as only parts of the modified screen gets restored. 2006/03/06 23:18:13 thb 1.3.18.2: RESYNC: (1.3-1.4); FILE MERGED 2006/03/06 21:21:11 thb 1.3.18.1: #i59324# Correctly handling the case of 'empty' ranges now in all canvastools methods (before, we'd happily process empty ranges, yielding rather arbitrary non-empty ones afterwards); improved debug display for VCL canvas sprite count
Diffstat (limited to 'canvas/source')
-rw-r--r--canvas/source/vcl/spritecanvashelper.cxx24
1 files changed, 19 insertions, 5 deletions
diff --git a/canvas/source/vcl/spritecanvashelper.cxx b/canvas/source/vcl/spritecanvashelper.cxx
index a364fd91807e..e8952bf44e9c 100644
--- a/canvas/source/vcl/spritecanvashelper.cxx
+++ b/canvas/source/vcl/spritecanvashelper.cxx
@@ -4,9 +4,9 @@
*
* $RCSfile: spritecanvashelper.cxx,v $
*
- * $Revision: 1.8 $
+ * $Revision: 1.9 $
*
- * last change: $Author: obo $ $Date: 2006-09-17 03:31:39 $
+ * last change: $Author: kz $ $Date: 2006-12-13 14:49:07 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -271,6 +271,20 @@ namespace vclcanvas
const Size aOutDevSize( rBackOutDev.GetOutputSizePixel() );
const Point aEmptyPoint(0,0);
+ Window* pTargetWindow = NULL;
+ if( rOutDev.GetOutDevType() == OUTDEV_WINDOW )
+ {
+ pTargetWindow = &static_cast<Window&>(rOutDev); // TODO(Q3): Evil downcast.
+
+ // we're double-buffered, thus no need for paint area-limiting
+ // clips. besides that, will interfere with animations (as for
+ // Window-invalidate repaints, only parts of the window will
+ // be redrawn otherwise)
+ const Region aFullWindowRegion( Rectangle(aEmptyPoint,
+ aOutDevSize) );
+ pTargetWindow->ExpandPaintClipRegion(aFullWindowRegion);
+ }
+
// TODO(P1): Might be worthwile to track areas of background
// changes, too.
if( !bUpdateAll && !io_bSurfaceDirty )
@@ -345,10 +359,10 @@ namespace vclcanvas
// render requests (calling code might rely on timing,
// i.e. assume that things are visible on screen after
// updateScreen() returns).
- if( rOutDev.GetOutDevType() == OUTDEV_WINDOW )
+ if( pTargetWindow )
{
- // TODO(Q3): Evil downcast.
- static_cast<Window&>(rOutDev).Sync();
+ // commit to screen
+ pTargetWindow->Sync();
}
return sal_True;