summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authortsahi glik <tsahi.glik@cloudon.com>2013-08-30 11:10:40 -0700
committerTor Lillqvist <tml@collabora.com>2013-09-12 11:44:36 +0000
commit16a53253e5991de8d44679157c29d58bb431eb2c (patch)
tree53b672249dd4ca2abf5379cec326334688d49737 /vcl
parent854c302ed254f2b439cd90c60ff6635111f449f1 (diff)
Sync IOS screen invalidate to end of paint
Change-Id: If179c5280366a377ace710e4acf7df737544b224 Reviewed-on: https://gerrit.libreoffice.org/5706 Reviewed-by: Tor Lillqvist <tml@collabora.com> Tested-by: Tor Lillqvist <tml@collabora.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/ios/iosinst.cxx19
-rw-r--r--vcl/source/window/window.cxx1
2 files changed, 18 insertions, 2 deletions
diff --git a/vcl/ios/iosinst.cxx b/vcl/ios/iosinst.cxx
index b316d34269ed..8b654a58003a 100644
--- a/vcl/ios/iosinst.cxx
+++ b/vcl/ios/iosinst.cxx
@@ -146,6 +146,9 @@ SalSystem *IosSalInstance::CreateSalSystem()
class IosSalFrame : public SvpSalFrame
{
+private:
+ basegfx::B2IBox m_DamagedRect;
+
public:
IosSalFrame( IosSalInstance *pInstance,
SalFrame *pParent,
@@ -176,7 +179,7 @@ public:
if (rDamageRect.isEmpty())
return;
- IosSalInstance::getInstance()->damaged( this, rDamageRect );
+ m_DamagedRect.expand(rDamageRect);
}
virtual void UpdateSettings( AllSettings &rSettings )
@@ -199,6 +202,16 @@ public:
rSettings.SetStyleSettings( aStyleSet );
}
+
+ virtual void Flush()
+ {
+ IosSalInstance::getInstance()->damaged( this, m_DamagedRect );
+ }
+
+ void resetDamaged()
+ {
+ m_DamagedRect.reset();
+ }
};
SalFrame *IosSalInstance::CreateChildFrame( SystemParentData* pParent, sal_uLong nStyle )
@@ -322,7 +335,7 @@ IMPL_LINK( IosSalInstance, RenderWindows, RenderWindowsArg*, arg )
for( std::list< SalFrame* >::const_iterator it = getFrames().begin();
it != getFrames().end();
it++ ) {
- SvpSalFrame *pFrame = static_cast<SvpSalFrame *>(*it);
+ IosSalFrame *pFrame = static_cast<IosSalFrame *>(*it);
SalFrameGeometry aGeom = pFrame->GetGeometry();
CGRect bbox = CGRectMake( aGeom.nX, aGeom.nY, aGeom.nWidth, aGeom.nHeight );
if ( pFrame->IsVisible() &&
@@ -344,6 +357,8 @@ IMPL_LINK( IosSalInstance, RenderWindows, RenderWindowsArg*, arg )
false,
kCGRenderingIntentDefault );
CGContextDrawImage( arg->context, bbox, image );
+
+ pFrame->resetDamaged();
}
}
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index 669e0eb62f43..d027eaa9d365 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -7568,6 +7568,7 @@ void Window::Update()
}
pUpdateWindow->ImplCallPaint( NULL, pUpdateWindow->mpWindowImpl->mnPaintFlags );
+ bFlush = sal_True;
}
if ( bFlush )