summaryrefslogtreecommitdiff
path: root/recipes-graphics/gpicview/gpicview/0001-gpicview-allow-to-build-for-gtk-wayland.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-graphics/gpicview/gpicview/0001-gpicview-allow-to-build-for-gtk-wayland.patch')
-rw-r--r--recipes-graphics/gpicview/gpicview/0001-gpicview-allow-to-build-for-gtk-wayland.patch276
1 files changed, 276 insertions, 0 deletions
diff --git a/recipes-graphics/gpicview/gpicview/0001-gpicview-allow-to-build-for-gtk-wayland.patch b/recipes-graphics/gpicview/gpicview/0001-gpicview-allow-to-build-for-gtk-wayland.patch
new file mode 100644
index 0000000..8cf74c1
--- /dev/null
+++ b/recipes-graphics/gpicview/gpicview/0001-gpicview-allow-to-build-for-gtk-wayland.patch
@@ -0,0 +1,276 @@
+From aa2f81a3e78e7da505bdab465eacce9b37b035e6 Mon Sep 17 00:00:00 2001
+From: Max Krummenacher <max.krummenacher@toradex.com>
+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 <max.krummenacher@toradex.com>
+---
+ 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 <gdk/gdk.h>
+-# include <gdk/gdkx.h>
+-# include <X11/Xlib.h>
+-# include <X11/Xutil.h>
+-# include <X11/Xatom.h>
+-
+-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
+