mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 17:40:40 -05:00
query Xinerama screen information if HAVE_XINERAMA
2002-04-17 Havoc Pennington <hp@pobox.com> * src/screen.c (meta_screen_new): query Xinerama screen information if HAVE_XINERAMA * configure.in (found_xinerama): check for Xinerama
This commit is contained in:
parent
458e125c09
commit
f5c10f387b
@ -1,3 +1,10 @@
|
|||||||
|
2002-04-17 Havoc Pennington <hp@pobox.com>
|
||||||
|
|
||||||
|
* src/screen.c (meta_screen_new): query Xinerama screen
|
||||||
|
information if HAVE_XINERAMA
|
||||||
|
|
||||||
|
* configure.in (found_xinerama): check for Xinerama
|
||||||
|
|
||||||
2002-04-17 Changwoo Ryu <cwryu@debian.org>
|
2002-04-17 Changwoo Ryu <cwryu@debian.org>
|
||||||
|
|
||||||
* configure.in (ALL_LINGUAS): Added ko (Korean).
|
* configure.in (ALL_LINGUAS): Added ko (Korean).
|
||||||
|
@ -10,3 +10,4 @@
|
|||||||
#undef HAVE_SHAPE_EXT
|
#undef HAVE_SHAPE_EXT
|
||||||
#undef HAVE_XFT
|
#undef HAVE_XFT
|
||||||
#undef HAVE_SM
|
#undef HAVE_SM
|
||||||
|
#undef HAVE_XINERAMA
|
||||||
|
13
configure.in
13
configure.in
@ -93,7 +93,18 @@ AC_PATH_XTRA
|
|||||||
|
|
||||||
CFLAGS="$METACITY_CFLAGS $CFLAGS $X_CFLAGS"
|
CFLAGS="$METACITY_CFLAGS $CFLAGS $X_CFLAGS"
|
||||||
|
|
||||||
METACITY_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $METACITY_LIBS"
|
XINERAMA_LIBS=
|
||||||
|
found_xinerama=false
|
||||||
|
AC_CHECK_LIB(Xext, XineramaQueryExtension,
|
||||||
|
[AC_CHECK_HEADERS(X11/extensions/Xinerama.h,
|
||||||
|
XINERAMA_LIBS=-lXinerama found_xinerama=true)],
|
||||||
|
, -lXinerama $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS)
|
||||||
|
|
||||||
|
if test "$found_xinerama" = "true"; then
|
||||||
|
AC_DEFINE(HAVE_XINERAMA)
|
||||||
|
fi
|
||||||
|
|
||||||
|
METACITY_LIBS="$XINERAMA_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $METACITY_LIBS"
|
||||||
|
|
||||||
found_sm=false
|
found_sm=false
|
||||||
case "$METACITY_LIBS" in
|
case "$METACITY_LIBS" in
|
||||||
|
73
src/screen.c
73
src/screen.c
@ -30,6 +30,10 @@
|
|||||||
#include "keybindings.h"
|
#include "keybindings.h"
|
||||||
#include "stack.h"
|
#include "stack.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_XINERAMA
|
||||||
|
#include <X11/extensions/Xinerama.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <X11/Xatom.h>
|
#include <X11/Xatom.h>
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -211,6 +215,75 @@ meta_screen_new (MetaDisplay *display,
|
|||||||
screen->default_xvisual = DefaultVisualOfScreen (screen->xscreen);
|
screen->default_xvisual = DefaultVisualOfScreen (screen->xscreen);
|
||||||
screen->default_depth = DefaultDepthOfScreen (screen->xscreen);
|
screen->default_depth = DefaultDepthOfScreen (screen->xscreen);
|
||||||
|
|
||||||
|
screen->xinerama_infos = NULL;
|
||||||
|
screen->n_xinerama_infos = 0;
|
||||||
|
|
||||||
|
#ifdef HAVE_XINERAMA
|
||||||
|
if (XineramaQueryExtension (display->xdisplay, NULL, NULL))
|
||||||
|
{
|
||||||
|
XineramaScreenInfo *infos;
|
||||||
|
int n_infos;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
n_infos = 0;
|
||||||
|
infos = XineramaQueryScreens (display->xdisplay, &n_infos);
|
||||||
|
|
||||||
|
meta_topic (META_DEBUG_XINERAMA,
|
||||||
|
"Found %d Xinerama screens on display %s\n",
|
||||||
|
n_infos, display->name);
|
||||||
|
|
||||||
|
if (n_infos > 0)
|
||||||
|
{
|
||||||
|
screen->xinerama_infos = g_new (MetaXineramaScreenInfo, n_infos);
|
||||||
|
screen->n_xinerama_infos = n_infos;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (i < n_infos)
|
||||||
|
{
|
||||||
|
screen->xinerama_infos[i].number = infos[i].screen_number;
|
||||||
|
screen->xinerama_infos[i].x_origin = infos[i].x_org;
|
||||||
|
screen->xinerama_infos[i].y_origin = infos[i].y_org;
|
||||||
|
screen->xinerama_infos[i].width = infos[i].width;
|
||||||
|
screen->xinerama_infos[i].height = infos[i].height;
|
||||||
|
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
meta_XFree (infos);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
meta_topic (META_DEBUG_XINERAMA,
|
||||||
|
"No Xinerama extension on display %s\n",
|
||||||
|
display->name);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
meta_topic (META_DEBUG_XINERAMA,
|
||||||
|
"Metacity compiled without Xinerama support\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* If no Xinerama, fill in the single screen info so
|
||||||
|
* we can use the field unconditionally
|
||||||
|
*/
|
||||||
|
if (screen->n_xinerama_infos == 0)
|
||||||
|
{
|
||||||
|
meta_topic (META_DEBUG_XINERAMA,
|
||||||
|
"No Xinerama screens, using default screen info\n");
|
||||||
|
|
||||||
|
screen->xinerama_infos = g_new (MetaXineramaScreenInfo, 1);
|
||||||
|
screen->n_xinerama_infos = 1;
|
||||||
|
|
||||||
|
screen->xinerama_infos[0].number = 0;
|
||||||
|
screen->xinerama_infos[0].x_origin = 0;
|
||||||
|
screen->xinerama_infos[0].y_origin = 0;
|
||||||
|
screen->xinerama_infos[0].width = screen->width;
|
||||||
|
screen->xinerama_infos[0].height = screen->height;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_assert (screen->n_xinerama_infos > 0);
|
||||||
|
g_assert (screen->xinerama_infos != NULL);
|
||||||
|
|
||||||
meta_screen_set_cursor (screen, META_CURSOR_DEFAULT);
|
meta_screen_set_cursor (screen, META_CURSOR_DEFAULT);
|
||||||
|
|
||||||
if (display->leader_window == None)
|
if (display->leader_window == None)
|
||||||
|
14
src/screen.h
14
src/screen.h
@ -26,6 +26,17 @@
|
|||||||
#include <X11/Xutil.h>
|
#include <X11/Xutil.h>
|
||||||
#include "ui.h"
|
#include "ui.h"
|
||||||
|
|
||||||
|
typedef struct _MetaXineramaScreenInfo MetaXineramaScreenInfo;
|
||||||
|
|
||||||
|
struct _MetaXineramaScreenInfo
|
||||||
|
{
|
||||||
|
int number;
|
||||||
|
int x_origin;
|
||||||
|
int y_origin;
|
||||||
|
int width;
|
||||||
|
int height;
|
||||||
|
};
|
||||||
|
|
||||||
typedef void (* MetaScreenWindowFunc) (MetaScreen *screen, MetaWindow *window,
|
typedef void (* MetaScreenWindowFunc) (MetaScreen *screen, MetaWindow *window,
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
|
|
||||||
@ -48,6 +59,9 @@ struct _MetaScreen
|
|||||||
MetaStack *stack;
|
MetaStack *stack;
|
||||||
|
|
||||||
MetaCursor current_cursor;
|
MetaCursor current_cursor;
|
||||||
|
|
||||||
|
MetaXineramaScreenInfo *xinerama_infos;
|
||||||
|
int n_xinerama_infos;
|
||||||
};
|
};
|
||||||
|
|
||||||
MetaScreen* meta_screen_new (MetaDisplay *display,
|
MetaScreen* meta_screen_new (MetaDisplay *display,
|
||||||
|
@ -190,6 +190,8 @@ topic_name (MetaDebugTopic topic)
|
|||||||
return "GEOMETRY";
|
return "GEOMETRY";
|
||||||
case META_DEBUG_PING:
|
case META_DEBUG_PING:
|
||||||
return "PING";
|
return "PING";
|
||||||
|
case META_DEBUG_XINERAMA:
|
||||||
|
return "XINERAMA";
|
||||||
}
|
}
|
||||||
|
|
||||||
return "Window manager";
|
return "Window manager";
|
||||||
|
@ -55,7 +55,8 @@ typedef enum
|
|||||||
META_DEBUG_WINDOW_OPS = 1 << 7,
|
META_DEBUG_WINDOW_OPS = 1 << 7,
|
||||||
META_DEBUG_GEOMETRY = 1 << 8,
|
META_DEBUG_GEOMETRY = 1 << 8,
|
||||||
META_DEBUG_PLACEMENT = 1 << 9,
|
META_DEBUG_PLACEMENT = 1 << 9,
|
||||||
META_DEBUG_PING = 1 << 10
|
META_DEBUG_PING = 1 << 10,
|
||||||
|
META_DEBUG_XINERAMA = 1 << 11
|
||||||
|
|
||||||
} MetaDebugTopic;
|
} MetaDebugTopic;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user