[ooo-build-commit] .: patches/dev300

Thorsten Behrens thorsten at kemper.freedesktop.org
Wed Feb 10 13:58:31 PST 2010


 patches/dev300/apply                       |    1 
 patches/dev300/vcl-xinerama-clone-fix.diff |   47 +++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+)

New commits:
commit 006d5dd6f78b65009ba8f5693d95959460770f0f
Author: Thorsten Behrens <tbehrens at novell.com>
Date:   Wed Feb 10 22:53:59 2010 +0100

    Fix mis-detection of cloned displays in slideshow
    
    * patches/dev300/apply: added below patch
    * patches/dev300/vcl-xinerama-clone-fix.diff: check for monitor rects
      being at the same virtual offset also in
      GtkSalDisplay::monitorsChanged(), to avoid mis-detection of clone
      display as multi-screen setup during slideshow. Fixes n#578730.

diff --git a/patches/dev300/apply b/patches/dev300/apply
index f7fa6a3..118f3a4 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -3566,3 +3566,4 @@ sd-avoid-looping-fix.diff, thorsten
 svx-validate-paradepth.diff, thorsten
 vcl-pngread-greypalette-fix.diff, thorsten
 svx-textpropreader-limit-fix.diff, thorsten
+vcl-xinerama-clone-fix.diff, n#578730, thorsten
diff --git a/patches/dev300/vcl-xinerama-clone-fix.diff b/patches/dev300/vcl-xinerama-clone-fix.diff
new file mode 100644
index 0000000..0f85e90
--- /dev/null
+++ b/patches/dev300/vcl-xinerama-clone-fix.diff
@@ -0,0 +1,47 @@
+Fix clone screen issues with gtk plugin on xinerama displays
+
+From: Thorsten Behrens <thb at openoffice.org>
+
+
+---
+
+ vcl/unx/gtk/app/gtkdata.cxx |   25 +++++++++++++++++++++++--
+ 1 files changed, 23 insertions(+), 2 deletions(-)
+
+
+diff --git vcl/unx/gtk/app/gtkdata.cxx vcl/unx/gtk/app/gtkdata.cxx
+index 047938a..2ebd8b6 100644
+--- vcl/unx/gtk/app/gtkdata.cxx
++++ vcl/unx/gtk/app/gtkdata.cxx
+@@ -224,8 +224,29 @@ void GtkSalDisplay::monitorsChanged( GdkScreen* pScreen )
+                 {
+                     GdkRectangle dest;
+                     gdk_screen_get_monitor_geometry(pScreen, i, &dest);
+-                    m_aXineramaScreens.push_back( Rectangle( Point(dest.x,
+-                                                                   dest.y ), Size( dest.width, dest.height ) ) );
++
++                    // see if any frame buffers are at the same coordinates
++                    // this can happen with weird configuration e.g. on
++                    // XFree86 and Clone displays
++                    bool bDuplicate = false;
++                    for( int n = 0; n < i; n++ )
++                    {
++                        if( m_aXineramaScreens[n].Left() == dest.x &&
++                            m_aXineramaScreens[n].Top() == dest.y )
++                        {
++                            bDuplicate = true;
++                            if( m_aXineramaScreens[n].GetWidth() < dest.width ||
++                                m_aXineramaScreens[n].GetHeight() < dest.height )
++                            {
++                                m_aXineramaScreens[n].SetSize( Size( dest.width,
++                                                                     dest.height ) );
++                            }
++                            break;
++                        }
++                    }
++                    if( ! bDuplicate )
++                        m_aXineramaScreens.push_back( Rectangle( Point(dest.x,
++                                                                       dest.y ), Size( dest.width, dest.height ) ) );
+                 }
+                 m_bXinerama = m_aXineramaScreens.size() > 1;
+                 if( ! m_aFrames.empty() )


More information about the ooo-build-commit mailing list