vcl/opengl/gdiimpl.cxx | 11 ----------- vcl/source/app/salvtables.cxx | 2 -- vcl/source/window/paint.cxx | 2 ++ vcl/unx/generic/window/salframe.cxx | 13 ++++++++----- vcl/unx/gtk/gtksalframe.cxx | 24 ++++++++++++++++-------- 5 files changed, 26 insertions(+), 26 deletions(-)
New commits: commit b9d4748edae66e6595691b09d296cd8ae36be2f6 Author: Michael Meeks <michael.me...@collabora.com> Date: Mon Nov 30 16:22:11 2015 +0000 Remove lots of paint debugging - squash me ... Change-Id: I968205786e7cd9857a0325b55d1a45d1adc4306c diff --git a/vcl/opengl/gdiimpl.cxx b/vcl/opengl/gdiimpl.cxx index b21eb12..31813fb 100644 --- a/vcl/opengl/gdiimpl.cxx +++ b/vcl/opengl/gdiimpl.cxx @@ -154,10 +154,6 @@ void OpenGLSalGraphicsImpl::Init() mpContext->ReleaseFramebuffer( maOffscreenTex ); } maOffscreenTex = OpenGLTexture(); - SAL_DEBUG("paint: " << this << " size mismatch - delete texture " << - maOffscreenTex.GetWidth() << " x " << - maOffscreenTex.GetHeight() << " vs. " << - GetWidth() << " x " << GetHeight()); VCL_GL_INFO("::Init - re-size offscreen texture"); } @@ -438,7 +434,6 @@ bool OpenGLSalGraphicsImpl::CheckOffscreenTexture() mpContext->ReleaseFramebuffer( maOffscreenTex ); maOffscreenTex = OpenGLTexture(); VCL_GL_INFO( "re-size offscreen texture" ); - SAL_DEBUG( "paint: " << this << " re-size offscreen texture" ); } } @@ -446,8 +441,6 @@ bool OpenGLSalGraphicsImpl::CheckOffscreenTexture() { VCL_GL_INFO( "create texture of size " << GetWidth() << " x " << GetHeight() ); - SAL_DEBUG( "paint: " << this << " create texture of size " - << GetWidth() << " x " << GetHeight() ); maOffscreenTex = OpenGLTexture( GetWidth(), GetHeight() ); bClearTexture = true; } @@ -1957,7 +1950,6 @@ void OpenGLSalGraphicsImpl::flush() if( !maOffscreenTex ) { - SAL_DEBUG("paint: " << this << " flush and swap - no texture !"); VCL_GL_INFO( "flushAndSwap - odd no texture !" ); return; } @@ -1965,12 +1957,9 @@ void OpenGLSalGraphicsImpl::flush() if (mnDrawCountAtFlush == mnDrawCount) { VCL_GL_INFO( "eliding redundant flushAndSwap, no drawing since last!" ); - SAL_DEBUG( "paint: " << this << " eliding redundant flushAndSwap, no drawing since last!" ); return; } - SAL_DEBUG("paint: " << this << " flush and swap"); - mnDrawCountAtFlush = mnDrawCount; OpenGLZone aZone; diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index bc77397..fce0e69 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -63,12 +63,10 @@ void SalFrame::BeginPaint() { m_nPaintNesting++; assert (m_nPaintNesting > 0); - SAL_DEBUG("paint: " << this << " begin " << m_nPaintNesting); } void SalFrame::EndPaint() { - SAL_DEBUG("paint: " << this << " end " << m_nPaintNesting); assert (m_nPaintNesting > 0); if (--m_nPaintNesting == 0) Flush(); commit 51d246db6506f349d8c7043b2328928bae430cb4 Author: Michael Meeks <michael.me...@collabora.com> Date: Mon Nov 30 16:17:09 2015 +0000 Squash out - already upstream. Change-Id: I035080bc0b801f8ed335924efec4b043938eb82d diff --git a/vcl/unx/gtk/gtksalframe.cxx b/vcl/unx/gtk/gtksalframe.cxx index eb9db82..50c8b76 100644 --- a/vcl/unx/gtk/gtksalframe.cxx +++ b/vcl/unx/gtk/gtksalframe.cxx @@ -495,6 +495,7 @@ void GtkSalFrame::doKeyCallback( guint state, GtkSalFrame::GtkSalFrame( SalFrame* pParent, SalFrameStyleFlags nStyle ) : m_nXScreen( getDisplay()->GetDefaultXScreen() ) , m_pGraphics(nullptr) + , m_bGraphics(false) { getDisplay()->registerFrame( this ); m_bDefaultPos = true; @@ -509,6 +510,7 @@ GtkSalFrame::GtkSalFrame( SalFrame* pParent, SalFrameStyleFlags nStyle ) GtkSalFrame::GtkSalFrame( SystemParentData* pSysData ) : m_nXScreen( getDisplay()->GetDefaultXScreen() ) , m_pGraphics(nullptr) + , m_bGraphics(false) { getDisplay()->registerFrame( this ); // permanently ignore errors from our unruly children ... commit c1776c01941bf27c4a1c03f405a6dca0f08ebffb Author: Michael Meeks <michael.me...@collabora.com> Date: Mon Nov 30 16:15:03 2015 +0000 Avoid excessive flushing by hold paint guard over window update. Change-Id: Id267e3e9245e987d98fe141d1356a7fc29d419a4 diff --git a/vcl/source/window/paint.cxx b/vcl/source/window/paint.cxx index 6402639..34462e6 100644 --- a/vcl/source/window/paint.cxx +++ b/vcl/source/window/paint.cxx @@ -1290,6 +1290,8 @@ void Window::Update() if ( !mpWindowImpl->mbReallyVisible ) return; + OutputDevice::PaintScope aScope (this); + bool bFlush = false; if ( mpWindowImpl->mpFrameWindow->mpWindowImpl->mbPaintFrame ) { commit 6ec7e89531f374b899d96478fc15cffeb9ce2daf Author: Michael Meeks <michael.me...@collabora.com> Date: Mon Nov 30 16:14:36 2015 +0000 vcl: Don't flush if we're mid-rendering - to avoid partial contents. Change-Id: I320736051a7955044c6306a569253ca9371191e4 diff --git a/vcl/unx/generic/window/salframe.cxx b/vcl/unx/generic/window/salframe.cxx index 6b1bbff..aee263a 100644 --- a/vcl/unx/generic/window/salframe.cxx +++ b/vcl/unx/generic/window/salframe.cxx @@ -2286,11 +2286,14 @@ void X11SalFrame::SetTitle( const OUString& rTitle ) void X11SalFrame::Flush() { - SAL_DEBUG("flush " << this); - if( pGraphics_ ) - pGraphics_->Flush(); - if( pFreeGraphics_ ) - pFreeGraphics_->Flush(); + // Don't flush if we're still painting, just wait. + if ( GetPaintNesting() == 0 ) + { + if( pGraphics_ ) + pGraphics_->Flush(); + if( pFreeGraphics_ ) + pFreeGraphics_->Flush(); + } XFlush( GetDisplay()->GetDisplay() ); } diff --git a/vcl/unx/gtk/gtksalframe.cxx b/vcl/unx/gtk/gtksalframe.cxx index 8d0fd0a..eb9db82 100644 --- a/vcl/unx/gtk/gtksalframe.cxx +++ b/vcl/unx/gtk/gtksalframe.cxx @@ -2623,13 +2623,20 @@ void GtkSalFrame::SetPointerPos( long nX, long nY ) void GtkSalFrame::Flush() { if( m_pGraphics ) - m_pGraphics->Flush(); - + { + // Don't flush if we're still painting, just wait. + if ( GetPaintNesting() == 0 ) + { + m_pGraphics->Flush(); #if GTK_CHECK_VERSION(3,0,0) - gdk_display_flush( getGdkDisplay() ); + gdk_display_flush( getGdkDisplay() ); #else - XFlush (GDK_DISPLAY_XDISPLAY (getGdkDisplay())); + XFlush (GDK_DISPLAY_XDISPLAY (getGdkDisplay())); #endif + } + else + SAL_WARN("vcl.opengl", "avoid erroneous flush during paint"); + } } #ifndef GDK_Open commit e656959689a55b6bd3d7d0fe64a333e3c08b5a15 Author: Michael Meeks <michael.me...@collabora.com> Date: Mon Nov 30 16:13:42 2015 +0000 vcl: gtk frames should DeInitialize properly, to handle GL cleanup. Change-Id: Ie6a5464c28b89f08639939690052023e685a3d33 diff --git a/vcl/unx/gtk/gtksalframe.cxx b/vcl/unx/gtk/gtksalframe.cxx index c318db9..8d0fd0a 100644 --- a/vcl/unx/gtk/gtksalframe.cxx +++ b/vcl/unx/gtk/gtksalframe.cxx @@ -845,9 +845,11 @@ void GtkSalFrame::InvalidateGraphics() if( m_pGraphics ) { #if !GTK_CHECK_VERSION(3,0,0) - m_pGraphics->SetDrawable( None, m_nXScreen ); + m_pGraphics->DeInit(); m_pGraphics->SetWindow(nullptr); #endif + delete m_pGraphics; + m_pGraphics = NULL; m_bGraphics = false; } } @@ -921,9 +923,6 @@ GtkSalFrame::~GtkSalFrame() g_object_unref( G_OBJECT( m_pForeignParent ) ); if( m_pForeignTopLevel ) g_object_unref( G_OBJECT( m_pForeignTopLevel) ); - - delete m_pGraphics; - m_pGraphics = NULL; } void GtkSalFrame::moveWindow( long nX, long nY ) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits