summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier Jardón <jjardon@gnome.org>2014-11-01 00:20:26 +0000
committerJavier Jardón <jjardon@gnome.org>2014-11-01 00:43:12 +0000
commit487c71d0706b6c5eac281b1c4b3919c66facbd44 (patch)
tree0124511b749699cf8f3821f67aec38afc64a212e
parentc0620e432650e81062c1967cc669829dbd29b310 (diff)
downloadlibcanberra-baserock/jjardon/gnome.tar.gz
patch to drop X runtime depsbaserock/jjardon/gnome
-rw-r--r--configure.ac2
-rw-r--r--src/canberra-gtk-module.c33
-rw-r--r--src/canberra-gtk.c128
3 files changed, 93 insertions, 70 deletions
diff --git a/configure.ac b/configure.ac
index f68602d..979bfd4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -437,7 +437,7 @@ AC_ARG_ENABLE([gtk],
AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [false])
if test "x${gtk}" != xno ; then
- PKG_CHECK_MODULES(GTK, [ gtk+-2.0 >= 2.20.0 gthread-2.0 glib-2.0 >= 2.32 gdk-2.0 x11 ],
+ PKG_CHECK_MODULES(GTK, [ gtk+-2.0 >= 2.20.0 gthread-2.0 glib-2.0 >= 2.32 gdk-2.0 gdk-x11-2.0 x11 ],
[
HAVE_GTK=1
AC_DEFINE([HAVE_GTK], 1, [Have GTK?])
diff --git a/src/canberra-gtk-module.c b/src/canberra-gtk-module.c
index c1532ab..b83e0d2 100644
--- a/src/canberra-gtk-module.c
+++ b/src/canberra-gtk-module.c
@@ -25,7 +25,9 @@
#endif
#include <gtk/gtk.h>
+#ifdef GDK_WINDOWING_X11
#include <gdk/gdkx.h>
+#endif
#include <X11/Xatom.h>
#include "canberra-gtk.h"
@@ -299,6 +301,7 @@ static SoundEventData* filter_sound_event(SoundEventData *d) {
return d;
}
+#ifdef GDK_WINDOWING_X11
static gint window_get_desktop(GdkDisplay *d, GdkWindow *w) {
Atom type_return;
gint format_return;
@@ -410,6 +413,7 @@ static gboolean window_is_xembed(GdkDisplay *d, GdkWindow *w) {
return ret;
}
+#endif
static void dispatch_sound_event(SoundEventData *d) {
int ret = CA_SUCCESS;
@@ -471,13 +475,16 @@ static void dispatch_sound_event(SoundEventData *d) {
hint == GDK_WINDOW_TYPE_HINT_DIALOG) {
gboolean played_sound = FALSE;
- gboolean is_xembed;
-
- is_xembed =
- gtk_widget_get_realized(GTK_WIDGET(d->object)) &&
- window_is_xembed(
- gtk_widget_get_display(GTK_WIDGET(d->object)),
- gtk_widget_get_window(GTK_WIDGET(d->object)));
+ gboolean is_xembed = FALSE;
+
+#ifdef GDK_WINDOWING_X11
+ if (GDK_IS_X11_DISPLAY (gtk_widget_get_display (GTK_WIDGET (d->object))))
+ is_xembed =
+ gtk_widget_get_realized(GTK_WIDGET(d->object)) &&
+ window_is_xembed(
+ gtk_widget_get_display(GTK_WIDGET(d->object)),
+ gtk_widget_get_window(GTK_WIDGET(d->object)));
+#endif
g_object_set_qdata(d->object, is_xembed_quark, GINT_TO_POINTER(is_xembed));
@@ -596,8 +603,16 @@ static void dispatch_sound_event(SoundEventData *d) {
GdkDisplay *display;
display = gtk_widget_get_display(GTK_WIDGET(d->object));
- w_desktop = window_get_desktop(display, gtk_widget_get_window(GTK_WIDGET(d->object)));
- c_desktop = display_get_desktop(display);
+#ifdef GDK_WINDOWING_X11
+ if (GDK_IS_X11_DISPLAY (display)) {
+ w_desktop = window_get_desktop(display, gtk_widget_get_window(GTK_WIDGET(d->object)));
+ c_desktop = display_get_desktop(display);
+ } else
+#endif
+ {
+ w_desktop = 0;
+ c_desktop = 0;
+ }
}
if ((e->changed_mask & GDK_WINDOW_STATE_ICONIFIED) &&
diff --git a/src/canberra-gtk.c b/src/canberra-gtk.c
index 08cb668..a41789b 100644
--- a/src/canberra-gtk.c
+++ b/src/canberra-gtk.c
@@ -26,7 +26,9 @@
#include <gtk/gtk.h>
#include <gdk/gdk.h>
+#ifdef GDK_WINDOWING_X11
#include <gdk/gdkx.h>
+#endif
#include <X11/Xatom.h>
#include "canberra.h"
@@ -177,6 +179,7 @@ static GtkWindow* get_toplevel(GtkWidget *w) {
return GTK_WINDOW(w);
}
+#ifdef GDK_WINDOWING_X11
static gint window_get_desktop(GdkDisplay *d, GdkWindow *w) {
Atom type_return;
gint format_return;
@@ -209,6 +212,7 @@ static gint window_get_desktop(GdkDisplay *d, GdkWindow *w) {
return ret;
}
+#endif
/**
* ca_gtk_proplist_set_for_widget:
@@ -257,88 +261,92 @@ int ca_gtk_proplist_set_for_widget(ca_proplist *p, GtkWidget *widget) {
if ((ret = ca_proplist_sets(p, CA_PROP_WINDOW_ICON_NAME, t)) < 0)
return ret;
- if (gtk_widget_get_realized(GTK_WIDGET(w))) {
- GdkWindow *dw = NULL;
- GdkScreen *screen = NULL;
- GdkDisplay *display = NULL;
- gint x = -1, y = -1, width = -1, height = -1, screen_width = -1, screen_height = -1;
-
- if ((dw = gtk_widget_get_window(GTK_WIDGET(w))))
- if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X11_XID, "%lu", (unsigned long) GDK_WINDOW_XID(dw))) < 0)
- return ret;
+#ifdef GDK_WINDOWING_X11
+ if (GDK_IS_X11_DISPLAY (gtk_widget_get_display (GTK_WIDGET(w)))) {
+ if (gtk_widget_get_realized(GTK_WIDGET(w))) {
+ GdkWindow *dw = NULL;
+ GdkScreen *screen = NULL;
+ GdkDisplay *display = NULL;
+ gint x = -1, y = -1, width = -1, height = -1, screen_width = -1, screen_height = -1;
- if ((display = gtk_widget_get_display(GTK_WIDGET(w)))) {
- if ((t = gdk_display_get_name(display)))
- if ((ret = ca_proplist_sets(p, CA_PROP_WINDOW_X11_DISPLAY, t)) < 0)
+ if ((dw = gtk_widget_get_window(GTK_WIDGET(w))))
+ if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X11_XID, "%lu", (unsigned long) GDK_WINDOW_XID(dw))) < 0)
return ret;
- if (dw) {
- gint desktop = window_get_desktop(display, dw);
-
- if (desktop >= 0)
- if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_DESKTOP, "%i", desktop)) < 0)
+ if ((display = gtk_widget_get_display(GTK_WIDGET(w)))) {
+ if ((t = gdk_display_get_name(display)))
+ if ((ret = ca_proplist_sets(p, CA_PROP_WINDOW_X11_DISPLAY, t)) < 0)
return ret;
- }
- }
- if ((screen = gtk_widget_get_screen(GTK_WIDGET(w)))) {
+ if (dw) {
+ gint desktop = window_get_desktop(display, dw);
- if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X11_SCREEN, "%i", gdk_screen_get_number(screen))) < 0)
- return ret;
+ if (desktop >= 0)
+ if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_DESKTOP, "%i", desktop)) < 0)
+ return ret;
+ }
+ }
+
+ if ((screen = gtk_widget_get_screen(GTK_WIDGET(w)))) {
- if (dw)
- if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X11_MONITOR, "%i", gdk_screen_get_monitor_at_window(screen, dw))) < 0)
+ if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X11_SCREEN, "%i", gdk_screen_get_number(screen))) < 0)
return ret;
- }
- /* FIXME, this might cause a round trip */
+ if (dw)
+ if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X11_MONITOR, "%i", gdk_screen_get_monitor_at_window(screen, dw))) < 0)
+ return ret;
+ }
- if (dw) {
- gdk_window_get_origin(dw, &x, &y);
+ /* FIXME, this might cause a round trip */
- if (x >= 0)
- if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X, "%i", x)) < 0)
- return ret;
- if (y >= 0)
- if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_Y, "%i", y)) < 0)
- return ret;
- }
+ if (dw) {
+ gdk_window_get_origin(dw, &x, &y);
- gtk_window_get_size(w, &width, &height);
+ if (x >= 0)
+ if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X, "%i", x)) < 0)
+ return ret;
+ if (y >= 0)
+ if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_Y, "%i", y)) < 0)
+ return ret;
+ }
- if (width > 0)
- if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_WIDTH, "%i", width)) < 0)
- return ret;
- if (height > 0)
- if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_HEIGHT, "%i", height)) < 0)
- return ret;
+ gtk_window_get_size(w, &width, &height);
- if (x >= 0 && width > 0) {
- screen_width = gdk_screen_get_width(gtk_widget_get_screen(GTK_WIDGET(w)));
+ if (width > 0)
+ if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_WIDTH, "%i", width)) < 0)
+ return ret;
+ if (height > 0)
+ if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_HEIGHT, "%i", height)) < 0)
+ return ret;
- x += width/2;
- x = CA_CLAMP(x, 0, screen_width-1);
+ if (x >= 0 && width > 0) {
+ screen_width = gdk_screen_get_width(gtk_widget_get_screen(GTK_WIDGET(w)));
- /* We use these strange format strings here to avoid that libc
- * applies locale information on the formatting of floating
- * numbers. */
+ x += width/2;
+ x = CA_CLAMP(x, 0, screen_width-1);
- if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_HPOS, "%i.%03i",
- (int) (x/(screen_width-1)), (int) (1000.0*x/(screen_width-1)) % 1000)) < 0)
- return ret;
- }
+ /* We use these strange format strings here to avoid that libc
+ * applies locale information on the formatting of floating
+ * numbers. */
- if (y >= 0 && height > 0) {
- screen_height = gdk_screen_get_height(gtk_widget_get_screen(GTK_WIDGET(w)));
+ if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_HPOS, "%i.%03i",
+ (int) (x/(screen_width-1)), (int) (1000.0*x/(screen_width-1)) % 1000)) < 0)
+ return ret;
+ }
- y += height/2;
- y = CA_CLAMP(y, 0, screen_height-1);
+ if (y >= 0 && height > 0) {
+ screen_height = gdk_screen_get_height(gtk_widget_get_screen(GTK_WIDGET(w)));
- if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_VPOS, "%i.%03i",
- (int) (y/(screen_height-1)), (int) (1000.0*y/(screen_height-1)) % 1000)) < 0)
- return ret;
+ y += height/2;
+ y = CA_CLAMP(y, 0, screen_height-1);
+
+ if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_VPOS, "%i.%03i",
+ (int) (y/(screen_height-1)), (int) (1000.0*y/(screen_height-1)) % 1000)) < 0)
+ return ret;
+ }
}
}
+#endif
return CA_SUCCESS;
}