diff options
author | tsahi glik <tsahi.glik@cloudon.com> | 2013-08-30 11:10:40 -0700 |
---|---|---|
committer | Tor Lillqvist <tml@collabora.com> | 2013-09-12 11:44:36 +0000 |
commit | 16a53253e5991de8d44679157c29d58bb431eb2c (patch) | |
tree | 53b672249dd4ca2abf5379cec326334688d49737 /vcl | |
parent | 854c302ed254f2b439cd90c60ff6635111f449f1 (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.cxx | 19 | ||||
-rw-r--r-- | vcl/source/window/window.cxx | 1 |
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 ) |