summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authormonsta <[email protected]>2016-10-15 15:39:12 +0300
committermonsta <[email protected]>2016-10-15 15:39:12 +0300
commit40e26ed6d0e9ef84522ad0723f630bd7d796beec (patch)
tree67374984e9b7d2c60525976a008889775f7de4f3 /src/core
parent3b69fd200912e27ce64caf3bf5d4338aab73177b (diff)
downloadmarco-40e26ed6d0e9ef84522ad0723f630bd7d796beec.tar.bz2
marco-40e26ed6d0e9ef84522ad0723f630bd7d796beec.tar.xz
move to GTK+3 (>= 3.14), drop GTK+2 code and --with-gtk build option
Diffstat (limited to 'src/core')
-rw-r--r--src/core/display.c11
-rw-r--r--src/core/errors.c264
-rw-r--r--src/core/main.c3
-rw-r--r--src/core/screen.c15
-rw-r--r--src/core/window-private.h1
5 files changed, 2 insertions, 292 deletions
diff --git a/src/core/display.c b/src/core/display.c
index caa76247..7b3ec502 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -1471,23 +1471,15 @@ static gboolean maybe_send_event_to_gtk(MetaDisplay* display, XEvent* xevent)
* (client-side) subwindow for individual menu items.
*/
-#if GTK_CHECK_VERSION (3, 0, 0)
GdkDeviceManager *device_manager = gdk_display_get_device_manager (gdk_display);
GdkDevice *device = gdk_device_manager_get_client_pointer (device_manager);
if (gdk_display_device_is_grabbed(gdk_display, device))
-#else
- if (gdk_display_pointer_is_grabbed(gdk_display))
-#endif
{
return FALSE;
}
-#if GTK_CHECK_VERSION (3, 0, 0)
if (gdk_display_device_is_grabbed(gdk_display, device))
-#else
- if (gdk_display_pointer_is_grabbed(gdk_display))
-#endif
{
return FALSE;
}
@@ -1586,9 +1578,8 @@ static gboolean maybe_send_event_to_gtk(MetaDisplay* display, XEvent* xevent)
g_assert_not_reached();
break;
}
-#if GTK_CHECK_VERSION (3, 0, 0)
+
gdk_event_set_device (gdk_event, device);
-#endif
/* If we've gotten here, we've filled in the gdk_event and should send it on */
gtk_main_do_event(gdk_event);
diff --git a/src/core/errors.c b/src/core/errors.c
index c2cf82d0..19d2e015 100644
--- a/src/core/errors.c
+++ b/src/core/errors.c
@@ -30,23 +30,6 @@
#include <gdk/gdk.h>
#include <gtk/gtk.h>
-#if !GTK_CHECK_VERSION (3, 0, 0)
-static int x_error_handler (Display *display,
- XErrorEvent *error);
-static int x_io_error_handler (Display *display);
-#endif
-
-void
-meta_errors_init (void)
-{
-#if !GTK_CHECK_VERSION (3, 0, 0)
- XSetErrorHandler (x_error_handler);
- XSetIOErrorHandler (x_io_error_handler);
-#endif
-}
-
-#if GTK_CHECK_VERSION (3, 0, 0)
-
void
meta_error_trap_push (MetaDisplay *display)
{
@@ -73,250 +56,3 @@ meta_error_trap_pop_with_return (MetaDisplay *display,
return gdk_error_trap_pop ();
}
-#else
-
-typedef struct ForeignDisplay ForeignDisplay;
-
-struct ForeignDisplay
-{
- Display *dpy;
- ErrorHandler handler;
- gpointer data;
- ForeignDisplay *next;
-};
-
-static ForeignDisplay *foreign_displays;
-
-void
-meta_errors_register_foreign_display (Display *foreign_dpy,
- ErrorHandler handler,
- gpointer data)
-{
- ForeignDisplay *info = g_new0 (ForeignDisplay, 1);
- info->dpy = foreign_dpy;
- info->handler = handler;
- info->data = data;
- info->next = foreign_displays;
- foreign_displays = info;
-}
-
-static void
-meta_error_trap_push_internal (MetaDisplay *display,
- gboolean need_sync)
-{
- /* GDK resets the error handler on each push */
- int (* old_error_handler) (Display *,
- XErrorEvent *);
-
- if (need_sync)
- {
- XSync (display->xdisplay, False);
- }
-
- gdk_error_trap_push ();
-
- /* old_error_handler will just be equal to x_error_handler
- * for nested traps
- */
- old_error_handler = XSetErrorHandler (x_error_handler);
-
- /* Replace GDK handler, but save it so we can chain up */
- if (display->error_trap_handler == NULL)
- {
- g_assert (display->error_traps == 0);
- display->error_trap_handler = old_error_handler;
- g_assert (display->error_trap_handler != x_error_handler);
- }
-
- display->error_traps += 1;
-
- meta_topic (META_DEBUG_ERRORS, "%d traps remain\n", display->error_traps);
-}
-
-static int
-meta_error_trap_pop_internal (MetaDisplay *display,
- gboolean need_sync)
-{
- int result;
-
- g_assert (display->error_traps > 0);
-
- if (need_sync)
- {
- XSync (display->xdisplay, False);
- }
-
- result = gdk_error_trap_pop ();
-
- display->error_traps -= 1;
-
- if (display->error_traps == 0)
- {
- /* check that GDK put our handler back; this
- * assumes that there are no pending GDK traps from GDK itself
- */
-
- XSetErrorHandler (x_error_handler);
-
- /* remove this */
- display->error_trap_handler = NULL;
- }
-
- meta_topic (META_DEBUG_ERRORS, "%d traps\n", display->error_traps);
-
- return result;
-}
-
-void
-meta_error_trap_push (MetaDisplay *display)
-{
- meta_error_trap_push_internal (display, FALSE);
-}
-
-void
-meta_error_trap_pop (MetaDisplay *display,
- gboolean last_request_was_roundtrip)
-{
- gboolean need_sync;
-
- /* we only have to sync when popping the outermost trap */
- need_sync = (display->error_traps == 1 && !last_request_was_roundtrip);
-
- if (need_sync)
- meta_topic (META_DEBUG_SYNC, "Syncing on error_trap_pop, traps = %d, roundtrip = %d\n",
- display->error_traps, last_request_was_roundtrip);
-
- display->error_trap_synced_at_last_pop = need_sync || last_request_was_roundtrip;
-
- meta_error_trap_pop_internal (display, need_sync);
-}
-
-void
-meta_error_trap_push_with_return (MetaDisplay *display)
-{
- gboolean need_sync;
-
- /* We don't sync on push_with_return if there are no traps
- * currently, because we assume that any errors were either covered
- * by a previous pop, or were fatal.
- *
- * More generally, we don't sync if we were synchronized last time
- * we popped. This is known to be the case if there are no traps,
- * but we also keep a flag so we know whether it's the case otherwise.
- */
-
- if (!display->error_trap_synced_at_last_pop)
- need_sync = TRUE;
- else
- need_sync = FALSE;
-
- if (need_sync)
- meta_topic (META_DEBUG_SYNC, "Syncing on error_trap_push_with_return, traps = %d\n",
- display->error_traps);
-
- meta_error_trap_push_internal (display, FALSE);
-}
-
-int
-meta_error_trap_pop_with_return (MetaDisplay *display,
- gboolean last_request_was_roundtrip)
-{
- if (!last_request_was_roundtrip)
- meta_topic (META_DEBUG_SYNC, "Syncing on error_trap_pop_with_return, traps = %d, roundtrip = %d\n",
- display->error_traps, last_request_was_roundtrip);
-
- display->error_trap_synced_at_last_pop = TRUE;
-
- return meta_error_trap_pop_internal (display,
- !last_request_was_roundtrip);
-}
-
-static int
-x_error_handler (Display *xdisplay,
- XErrorEvent *error)
-{
- int retval;
- gchar buf[64];
- MetaDisplay *display;
- ForeignDisplay *foreign;
-
- for (foreign = foreign_displays; foreign != NULL; foreign = foreign->next)
- {
- if (foreign->dpy == xdisplay)
- {
- foreign->handler (xdisplay, error, foreign->data);
-
- return 0;
- }
- }
-
- XGetErrorText (xdisplay, error->error_code, buf, 63);
-
- display = meta_display_for_x_display (xdisplay);
-
- /* Display can be NULL here because the compositing manager
- * has its own Display, but Xlib only has one global error handler
- */
- if (display->error_traps > 0)
- {
- /* we're in an error trap, chain to the trap handler
- * saved from GDK
- */
- meta_verbose ("X error: %s serial %ld error_code %d request_code %d minor_code %d)\n",
- buf,
- error->serial,
- error->error_code,
- error->request_code,
- error->minor_code);
-
- g_assert (display->error_trap_handler != NULL);
- g_assert (display->error_trap_handler != x_error_handler);
-
- retval = (* display->error_trap_handler) (xdisplay, error);
- }
- else
- {
- meta_bug ("Unexpected X error: %s serial %ld error_code %d request_code %d minor_code %d)\n",
- buf,
- error->serial,
- error->error_code,
- error->request_code,
- error->minor_code);
-
- retval = 1; /* compiler warning */
- }
-
- return retval;
-}
-
-static int
-x_io_error_handler (Display *xdisplay)
-{
- MetaDisplay *display;
-
- display = meta_display_for_x_display (xdisplay);
-
- if (display == NULL)
- meta_bug ("IO error received for unknown display?\n");
-
- if (errno == EPIPE)
- {
- meta_warning (_("Lost connection to the display '%s';\n"
- "most likely the X server was shut down or you killed/destroyed\n"
- "the window manager.\n"),
- display->name);
- }
- else
- {
- meta_warning (_("Fatal IO error %d (%s) on display '%s'.\n"),
- errno, g_strerror (errno),
- display->name);
- }
-
- /* Xlib would force an exit anyhow */
- exit (1);
-
- return 0;
-}
-
-#endif
diff --git a/src/core/main.c b/src/core/main.c
index d6d789e2..b5ffccf1 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -482,9 +482,6 @@ main (int argc, char **argv)
meta_ui_init (&argc, &argv);
- /* must be after UI init so we can override GDK handlers */
- meta_errors_init ();
-
/* Load prefs */
meta_prefs_init ();
meta_prefs_add_listener (prefs_changed_callback, NULL);
diff --git a/src/core/screen.c b/src/core/screen.c
index 162046e8..3c1caf61 100644
--- a/src/core/screen.c
+++ b/src/core/screen.c
@@ -1220,27 +1220,15 @@ get_window_pixbuf (MetaWindow *window,
int *width,
int *height)
{
-#if GTK_CHECK_VERSION (3, 0, 0)
cairo_surface_t *surface;
-#else
- Pixmap pmap;
-#endif
GdkPixbuf *pixbuf, *scaled;
double ratio;
-#if GTK_CHECK_VERSION (3, 0, 0)
surface = meta_compositor_get_window_surface (window->display->compositor,
window);
if (surface == None)
return NULL;
-#else
- pmap = meta_compositor_get_window_pixmap (window->display->compositor,
- window);
- if (pmap == None)
- return NULL;
-#endif
-#if GTK_CHECK_VERSION (3, 0, 0)
meta_error_trap_push (NULL);
pixbuf = meta_ui_get_pixbuf_from_surface (surface);
@@ -1248,9 +1236,6 @@ get_window_pixbuf (MetaWindow *window,
if (meta_error_trap_pop_with_return (NULL, FALSE) != Success)
g_clear_object (&pixbuf);
-#else
- pixbuf = meta_ui_get_pixbuf_from_pixmap (pmap);
-#endif
if (pixbuf == NULL)
return NULL;
diff --git a/src/core/window-private.h b/src/core/window-private.h
index 88713101..b3871bb8 100644
--- a/src/core/window-private.h
+++ b/src/core/window-private.h
@@ -42,6 +42,7 @@
#include "iconcache.h"
#include <X11/Xutil.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <gtk/gtk.h>
typedef struct _MetaGroup MetaGroup;
typedef struct _MetaWindowQueue MetaWindowQueue;