[mutter] Make support for "XFree86" Xinerama mandatory



commit 93037e4c6b9dabd11157291e055f314cb862bd98
Author: Owen W. Taylor <otaylor fishsoup net>
Date:   Tue Apr 24 15:18:46 2012 -0400

    Make support for "XFree86" Xinerama mandatory
    
    Require the headers for "XFree86" Xinerama to be present at compile
    time. The older "Solaris" Xinerama is only needed for versions of
    Solaris where Mutter is unlikely to work. Solaris 10 and 11 include
    the XFree86 Xinerama libraries, and apparently that's the only version
    that will actually work for Solaris 11, which uses Xorg.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=674727

 configure.in       |   69 +++++++++++++-----------------------------------
 src/core/display.c |    6 ----
 src/core/main.c    |   15 ----------
 src/core/screen.c  |   73 +--------------------------------------------------
 4 files changed, 21 insertions(+), 142 deletions(-)
---
diff --git a/configure.in b/configure.in
index 764fd5c..bcfca1c 100644
--- a/configure.in
+++ b/configure.in
@@ -212,60 +212,31 @@ AC_PATH_XTRA
 
 ALL_X_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
 
-# Check for Xinerama extension (Solaris impl or Xfree impl)
+# Check for Xinerama extension - we only support the "XFree86" style,
+# and not the older Solaris-only version; recent Solaris supports the
+# XFree86 style.
 mutter_save_cppflags="$CPPFLAGS"
 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
 
-AC_ARG_ENABLE(xinerama,
-  AC_HELP_STRING([--disable-xinerama],
-                 [disable mutter's use of the Xinerama extension]),
-  try_xinerama=$enable_xinerama,try_xinerama=yes)
-
-use_solaris_xinerama=no
-use_xfree_xinerama=no
-if test "${try_xinerama}" != no; then
-    case "$host" in
-        *-*-solaris*)
-            # Check for solaris
-            use_solaris_xinerama=yes
-            AC_CHECK_LIB(Xext, XineramaGetInfo,
-                         use_solaris_xinerama=yes, use_solaris_xinerama=no,
-                         $ALL_X_LIBS)
-            if test "x$use_solaris_xinerama" = "xyes"; then
-                AC_CHECK_HEADER(X11/extensions/xinerama.h,
-                                if test -z "`echo $ALL_X_LIBS | grep "\-lXext" 2> /dev/null`"; then
-                                    X_EXTRA_LIBS="-lXext $X_EXTRA_LIBS"
-                                fi
-                                AC_DEFINE(HAVE_SOLARIS_XINERAMA, , [Have Solaris-style Xinerama])
-                                AC_DEFINE(HAVE_XINERAMA, , [Have some version of Xinerama]),
-                                use_solaris_xinerama=no,
-                                [#include <X11/Xlib.h>])
-            fi
-            AC_MSG_CHECKING(for Xinerama support on Solaris)
-            AC_MSG_RESULT($use_solaris_xinerama);
-            ;;
-        *)
-            # Check for XFree
-            use_xfree_xinerama=yes
-            AC_CHECK_LIB(Xinerama, XineramaQueryExtension,
-                [AC_CHECK_HEADER(X11/extensions/Xinerama.h,
-                                 X_EXTRA_LIBS="-lXinerama $X_EXTRA_LIBS"
-                                 if test -z "`echo $ALL_X_LIBS | grep "\-lXext" 2> /dev/null`"; then
-                                     X_EXTRA_LIBS="-lXext $X_EXTRA_LIBS"
-                                 fi
-                                 AC_DEFINE(HAVE_XFREE_XINERAMA, , [Have XFree86-style Xinerama])
-                                 AC_DEFINE(HAVE_XINERAMA,, [Have some version of Xinerama]),
-                                 use_xfree_xinerama=no,
-                                 [#include <X11/Xlib.h>])],
-                use_xfree_xinerama=no, -lXext $ALL_X_LIBS)
-            AC_MSG_CHECKING(for Xinerama support on XFree86)
-            AC_MSG_RESULT($use_xfree_xinerama);
-            ;;
-    esac
-fi
+have_xinerama=yes
+AC_CHECK_LIB(Xinerama, XineramaQueryExtension,
+    [AC_CHECK_HEADER(X11/extensions/Xinerama.h,
+		     [X_EXTRA_LIBS="-lXinerama $X_EXTRA_LIBS"
+		     if test -z "`echo $ALL_X_LIBS | grep "\-lXext" 2> /dev/null`"; then
+			 X_EXTRA_LIBS="-lXext $X_EXTRA_LIBS"
+		     fi],
+		     have_xinerama=no,
+		     [#include <X11/Xlib.h>])],
+    have_xinerama=no, -lXext $ALL_X_LIBS)
+AC_MSG_CHECKING(for Xinerama support)
+AC_MSG_RESULT($have_xinerama)
 
 CPPFLAGS="$mutter_save_cppflags"
 
+if test x$have_xinerama = xno; then
+   AC_MSG_ERROR([Xinerama extension was not found])
+fi
+
 SHAPE_LIBS=
 found_shape=no
 AC_CHECK_LIB(Xext, XShapeQueryExtension,
@@ -496,8 +467,6 @@ mutter-$VERSION
 	source code location:	  ${srcdir}
 	compiler:		  ${CC}
 
-	XFree86 Xinerama:         ${use_xfree_xinerama}
-	Solaris Xinerama:         ${use_solaris_xinerama}
 	Startup notification:     ${have_startup_notification}
 	libcanberra:              ${have_libcanberra}
 	Introspection:            ${found_introspection}
diff --git a/src/core/display.c b/src/core/display.c
index c4e93c3..46f92b2 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -54,12 +54,6 @@
 #include <X11/cursorfont.h>
 #include "mutter-enum-types.h"
 
-#ifdef HAVE_SOLARIS_XINERAMA
-#include <X11/extensions/xinerama.h>
-#endif
-#ifdef HAVE_XFREE_XINERAMA
-#include <X11/extensions/Xinerama.h>
-#endif
 #ifdef HAVE_RANDR
 #include <X11/extensions/Xrandr.h>
 #endif
diff --git a/src/core/main.c b/src/core/main.c
index fdf4357..8718319 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -129,21 +129,6 @@ meta_print_compilation_info (void)
 #else
   meta_verbose ("Compiled without shape extension\n");
 #endif
-#ifdef HAVE_XINERAMA
-  meta_topic (META_DEBUG_XINERAMA, "Compiled with Xinerama extension\n");
-#else
-  meta_topic (META_DEBUG_XINERAMA, "Compiled without Xinerama extension\n");
-#endif
-#ifdef HAVE_XFREE_XINERAMA
-  meta_topic (META_DEBUG_XINERAMA, " (using XFree86 Xinerama)\n");
-#else
-  meta_topic (META_DEBUG_XINERAMA, " (not using XFree86 Xinerama)\n");
-#endif
-#ifdef HAVE_SOLARIS_XINERAMA
-  meta_topic (META_DEBUG_XINERAMA, " (using Solaris Xinerama)\n");
-#else
-  meta_topic (META_DEBUG_XINERAMA, " (not using Solaris Xinerama)\n");
-#endif
 #ifdef HAVE_XSYNC
   meta_verbose ("Compiled with sync extension\n");
 #else
diff --git a/src/core/screen.c b/src/core/screen.c
index 2df32b3..536fd19 100644
--- a/src/core/screen.c
+++ b/src/core/screen.c
@@ -41,12 +41,8 @@
 #include <meta/compositor.h>
 #include "mutter-enum-types.h"
 
-#ifdef HAVE_SOLARIS_XINERAMA
-#include <X11/extensions/xinerama.h>
-#endif
-#ifdef HAVE_XFREE_XINERAMA
 #include <X11/extensions/Xinerama.h>
-#endif
+
 #ifdef HAVE_RANDR
 #include <X11/extensions/Xrandr.h>
 #endif
@@ -478,7 +474,6 @@ reload_monitor_infos (MetaScreen *screen)
       screen->monitor_infos[1].rect.width = screen->rect.width / 2;
     }
 
-#ifdef HAVE_XFREE_XINERAMA
   if (screen->n_monitor_infos == 0 &&
       XineramaIsActive (display->xdisplay))
     {
@@ -548,74 +543,10 @@ reload_monitor_infos (MetaScreen *screen)
   else if (screen->n_monitor_infos > 0)
     {
       meta_topic (META_DEBUG_XINERAMA,
-                  "No XFree86 Xinerama extension or XFree86 Xinerama inactive on display %s\n",
+                  "No Xinerama extension or Xinerama inactive on display %s\n",
                   display->name);
     }
-#else
-  meta_topic (META_DEBUG_XINERAMA,
-              "Mutter compiled without XFree86 Xinerama support\n");
-#endif /* HAVE_XFREE_XINERAMA */
-
-#ifdef HAVE_SOLARIS_XINERAMA
-  /* This code from GDK, Copyright (C) 2002 Sun Microsystems */
-  if (screen->n_monitor_infos == 0 &&
-      XineramaGetState (screen->display->xdisplay,
-                        screen->number))
-    {
-      XRectangle monitors[MAXFRAMEBUFFERS];
-      unsigned char hints[16];
-      int result;
-      int n_monitors;
-      int i;
-
-      n_monitors = 0;
-      result = XineramaGetInfo (screen->display->xdisplay,
-                                screen->number,
-				monitors, hints,
-                                &n_monitors);
-      /* Yes I know it should be Success but the current implementation 
-       * returns the num of monitor
-       */
-      if (result > 0)
-	{
-          g_assert (n_monitors > 0);
-          
-          screen->monitor_infos = g_new0 (MetaMonitorInfo, n_monitors);
-          screen->n_monitor_infos = n_monitors;
-          
-          i = 0;
-          while (i < n_monitors)
-            {
-              screen->monitor_infos[i].number = i;
-              screen->monitor_infos[i].rect.x = monitors[i].x;
-              screen->monitor_infos[i].rect.y = monitors[i].y;
-              screen->monitor_infos[i].rect.width = monitors[i].width;
-              screen->monitor_infos[i].rect.height = monitors[i].height;
 
-              meta_topic (META_DEBUG_XINERAMA,
-                          "Monitor %d is %d,%d %d x %d\n",
-                          screen->monitor_infos[i].number,
-                          screen->monitor_infos[i].rect.x,
-                          screen->monitor_infos[i].rect.y,
-                          screen->monitor_infos[i].rect.width,
-                          screen->monitor_infos[i].rect.height);              
-              
-              ++i;
-            }
-	}
-    }
-  else if (screen->n_monitor_infos == 0)
-    {
-      meta_topic (META_DEBUG_XINERAMA,
-                  "No Solaris Xinerama extension or Solaris Xinerama inactive on display %s\n",
-                  display->name);
-    }
-#else
-  meta_topic (META_DEBUG_XINERAMA,
-              "Mutter compiled without Solaris Xinerama support\n");
-#endif /* HAVE_SOLARIS_XINERAMA */
-
-  
   /* If no Xinerama, fill in the single screen info so
    * we can use the field unconditionally
    */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]