include/vcl/salnativewidgets.hxx | 13 +++++++++++++ vcl/opengl/win/gdiimpl.cxx | 2 +- vcl/opengl/x11/gdiimpl.cxx | 2 +- vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx | 5 ++++- 4 files changed, 19 insertions(+), 3 deletions(-)
New commits: commit 54962518fa2ca3860fcb4d2c772dea21b22a184e Author: Tomaž Vajngerl <[email protected]> Date: Wed Sep 2 22:47:50 2015 +0900 tdf#93859 opengl - don't cache radiobuttons, refactor code dupl. Radio buttons and check boxes can't be cached with current framework as they have an additional rendering state provided in additional data. Refactor code to control which controls can be cached in one place only. Change-Id: I095a01cbf5dde013247d70ada89020f64c8c6510 diff --git a/include/vcl/salnativewidgets.hxx b/include/vcl/salnativewidgets.hxx index 2ae7a6e..8e9effb 100644 --- a/include/vcl/salnativewidgets.hxx +++ b/include/vcl/salnativewidgets.hxx @@ -279,6 +279,19 @@ public: && maSize.Width() == aOther.maSize.Width() && maSize.Height() == aOther.maSize.Height(); } + + bool canCacheControl() + { + switch(mnType) + { + case CTRL_CHECKBOX: + case CTRL_RADIOBUTTON: + return false; + default: + break; + } + return true; + } }; struct ControlCacheHashFunction diff --git a/vcl/opengl/win/gdiimpl.cxx b/vcl/opengl/win/gdiimpl.cxx index 0b53114..6896a02 100644 --- a/vcl/opengl/win/gdiimpl.cxx +++ b/vcl/opengl/win/gdiimpl.cxx @@ -119,7 +119,7 @@ bool WinOpenGLSalGraphicsImpl::RenderAndCacheNativeControl(OpenGLCompatibleDC& r if (!bResult) return false; - if (aControlCacheKey.mnType == CTRL_CHECKBOX) + if (!aControlCacheKey.canCacheControl()) return true; ControlCachePair pair(aControlCacheKey, std::move(pCombo)); diff --git a/vcl/opengl/x11/gdiimpl.cxx b/vcl/opengl/x11/gdiimpl.cxx index 0663ce9..4c59284 100644 --- a/vcl/opengl/x11/gdiimpl.cxx +++ b/vcl/opengl/x11/gdiimpl.cxx @@ -235,7 +235,7 @@ bool X11OpenGLSalGraphicsImpl::RenderAndCacheNativeControl(X11Pixmap* pPixmap, X if (!bResult) return false; - if (aControlCacheKey.mnType == CTRL_CHECKBOX) + if (!aControlCacheKey.canCacheControl()) return true; ControlCachePair pair(aControlCacheKey, std::move(pCombo)); diff --git a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx index 6a07683..6a0df25 100644 --- a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx @@ -904,8 +904,11 @@ bool GtkSalGraphics::drawNativeControl(ControlType nType, ControlPart nPart, Size( aCtrlRect.GetWidth()+2, aCtrlRect.GetHeight()+2) ); ControlCacheKey aControlCacheKey(nType, nPart, nState, aPixmapRect.GetSize()); - if (TryRenderCachedNativeControl(aControlCacheKey, aPixmapRect.Left(), aPixmapRect.Top())) + if (aControlCacheKey.canCacheControl() + && TryRenderCachedNativeControl(aControlCacheKey, aPixmapRect.Left(), aPixmapRect.Top())) + { return true; + } clipList aClip; int nPasses = 0;
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
