From aa2f81a3e78e7da505bdab465eacce9b37b035e6 Mon Sep 17 00:00:00 2001 From: Max Krummenacher Date: Mon, 6 Nov 2023 10:43:46 +0000 Subject: [PATCH] gpicview: allow to build for gtk/wayland For wayland gdk/gdkx.h does not work, even with xwayland. Remove the more elaborate gf_display_get_workarea function and use the existing fallback. With the removal of gdk from the code also remove the dependency check on x11 from configure. Upstream-Status: Inappropriate [Toradex specific] Upstream targets X11. Removing the use of gdk would remove functionaliy. Signed-off-by: Max Krummenacher --- Makefile.in | 2 - configure.ac | 4 -- data/Makefile.in | 2 - src/Makefile.am | 5 +- src/Makefile.in | 7 +-- src/working-area.c | 123 ++------------------------------------------- 6 files changed, 6 insertions(+), 137 deletions(-) diff --git a/Makefile.in b/Makefile.in index 6ecf74a..cad90b7 100644 --- a/Makefile.in +++ b/Makefile.in @@ -317,8 +317,6 @@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ -X11_CFLAGS = @X11_CFLAGS@ -X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff --git a/configure.ac b/configure.ac index 2fb2469..1591584 100644 --- a/configure.ac +++ b/configure.ac @@ -56,15 +56,11 @@ AC_SUBST(GTK_LIBS) pkg_modules="x11" -PKG_CHECK_MODULES(X11, [$pkg_modules]) AC_CHECK_LIB(jpeg, jpeg_start_decompress, [], [AC_MSG_ERROR([libjpeg not found])], -lm) AC_CHECK_HEADER(jpeglib.h, , [AC_MSG_ERROR([libjpeg not found])]) LIBJPEG='-ljpeg' -AC_SUBST(X11_CFLAGS) -AC_SUBST(X11_LIBS) - # Generate po/LINGUAS on the fly rather than relying on translators # to maintain it manually. This also overcome the problem that Transifex # cannot add a language to po/LINGUAS if a new po file is submitted. diff --git a/data/Makefile.in b/data/Makefile.in index c8c142b..ea2e4ff 100644 --- a/data/Makefile.in +++ b/data/Makefile.in @@ -234,8 +234,6 @@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ -X11_CFLAGS = @X11_CFLAGS@ -X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff --git a/src/Makefile.am b/src/Makefile.am index 44ecb19..6c7a683 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -2,7 +2,6 @@ # set the include path found by configure gpicview_CPPFLAGS = $(all_includes) \ - $(X11_CFLAGS) \ $(GTK_CFLAGS) \ $(ADDITIONAL_FLAGS) \ -I$(top_srcdir) \ @@ -27,7 +26,7 @@ gpicview_SOURCES = \ # the library search path. # use -nodefaultlibs to prevent linking libstdc++ -gpicview_LDADD = $(X11_LIBS) $(GTK_LIBS) -lm +gpicview_LDADD = $(GTK_LIBS) -lm noinst_HEADERS = \ glib-mem.h \ @@ -44,6 +43,4 @@ noinst_HEADERS = \ noinst_PROGRAMS=xml-purge xml_purge_SOURCES=xml-purge.c -xml_purge_CFLAGS=@X11_CFLAGS@ -xml_purge_LDADD=@X11_LIBS@ diff --git a/src/Makefile.in b/src/Makefile.in index 24cfe1f..65fea48 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -271,8 +271,6 @@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ -X11_CFLAGS = @X11_CFLAGS@ -X11_LIBS = @X11_LIBS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -331,7 +329,6 @@ top_srcdir = @top_srcdir@ # set the include path found by configure gpicview_CPPFLAGS = $(all_includes) \ - $(X11_CFLAGS) \ $(GTK_CFLAGS) \ $(ADDITIONAL_FLAGS) \ -I$(top_srcdir) \ @@ -356,7 +353,7 @@ gpicview_SOURCES = \ # the library search path. # use -nodefaultlibs to prevent linking libstdc++ -gpicview_LDADD = $(X11_LIBS) $(GTK_LIBS) -lm +gpicview_LDADD = $(GTK_LIBS) -lm noinst_HEADERS = \ glib-mem.h \ image-list.h \ @@ -371,8 +368,6 @@ noinst_HEADERS = \ jhead.h xml_purge_SOURCES = xml-purge.c -xml_purge_CFLAGS = @X11_CFLAGS@ -xml_purge_LDADD = @X11_LIBS@ all: all-am .SUFFIXES: diff --git a/src/working-area.c b/src/working-area.c index 86a1fa5..2fa9474 100644 --- a/src/working-area.c +++ b/src/working-area.c @@ -23,126 +23,11 @@ */ # include -# include -# include -# include -# include - -void get_working_area(GdkScreen* screen, GdkRectangle *rect); - -static gboolean gf_display_get_workarea(GdkScreen* g_screen, GdkRectangle *rect) { - Atom xa_desktops, xa_current, xa_workarea, xa_type; - Display *x_display; - Window x_root; - guint32 desktops = 0, current = 0; - gulong *workareas, len, fill; - guchar *data; - gint format; - - GdkDisplay *g_display; - Screen *x_screen; - - /* get the gdk display */ - g_display = gdk_display_get_default(); - if(!g_display) - return FALSE; - - /* get the x display from the gdk display */ - x_display = gdk_x11_display_get_xdisplay(g_display); - if(!x_display) - return FALSE; - - /* get the x screen from the gdk screen */ - x_screen = gdk_x11_screen_get_xscreen(g_screen); - if(!x_screen) - return FALSE; - - /* get the root window from the screen */ - x_root = XRootWindowOfScreen(x_screen); - - /* find the _NET_NUMBER_OF_DESKTOPS atom */ - xa_desktops = XInternAtom(x_display, "_NET_NUMBER_OF_DESKTOPS", True); - if(xa_desktops == None) - return FALSE; - - /* get the number of desktops */ - if(XGetWindowProperty(x_display, x_root, xa_desktops, 0, 1, False, - XA_CARDINAL, &xa_type, &format, &len, &fill, - &data) != Success) - { - return FALSE; - } - - if(!data) - return FALSE; - - desktops = *(guint32 *)data; - XFree(data); - - /* find the _NET_CURRENT_DESKTOP atom */ - xa_current = XInternAtom(x_display, "_NET_CURRENT_DESKTOP", True); - if(xa_current == None) - return FALSE; - - /* get the current desktop */ - if(XGetWindowProperty(x_display, x_root, xa_current, 0, 1, False, - XA_CARDINAL, &xa_type, &format, &len, &fill, - &data) != Success) - { - return FALSE; - } - - if(!data) - return FALSE; - - current = *(guint32 *)data; - XFree(data); - - /* find the _NET_WORKAREA atom */ - xa_workarea = XInternAtom(x_display, "_NET_WORKAREA", True); - if(xa_workarea == None) - return FALSE; - - if(XGetWindowProperty(x_display, x_root, xa_workarea, 0, (glong)(4 * 32), - False, AnyPropertyType, &xa_type, &format, &len, - &fill, &data) != Success) - { - return FALSE; - } - - /* make sure the type and format are good */ - if(xa_type == None || format == 0) - return FALSE; - - /* make sure we don't have any leftovers */ - if(fill) - return FALSE; - - /* make sure len divides evenly by 4 */ - if(len % 4) - return FALSE; - - /* it's good, lets use it */ - workareas = (gulong *)(guint32 *)data; - - rect->x = (guint32)workareas[current * 4]; - rect->y = (guint32)workareas[current * 4 + 1]; - rect->width = (guint32)workareas[current * 4 + 2]; - rect->height = (guint32)workareas[current * 4 + 3]; - - /* clean up our memory */ - XFree(data); - - return TRUE; -} void get_working_area(GdkScreen* screen, GdkRectangle *rect) { - if( !gf_display_get_workarea(screen, rect) ) - { - rect->x = 0; - rect->y = 0; - rect->width = gdk_screen_width(); - rect->height = gdk_screen_height(); - } + rect->x = 0; + rect->y = 0; + rect->width = gdk_screen_width(); + rect->height = gdk_screen_height(); } -- 2.35.3