diff --git a/gtk/Makefile.am b/gtk/Makefile.am index 439caf67..261bacac 100644 --- a/gtk/Makefile.am +++ b/gtk/Makefile.am @@ -53,7 +53,8 @@ snes9x_gtk_SOURCES = \ src/snes_ntsc_config.h \ src/snes_ntsc.h \ src/snes_ntsc_impl.h \ - src/snes_ntsc.c + src/snes_ntsc.c \ + src/gtk_2_3_compat.h if HQ2X snes9x_gtk_SOURCES += \ diff --git a/gtk/src/gtk_2_3_compat.h b/gtk/src/gtk_2_3_compat.h new file mode 100644 index 00000000..8a32f91e --- /dev/null +++ b/gtk/src/gtk_2_3_compat.h @@ -0,0 +1,16 @@ +#ifndef __GTK_2_3_COMPAT_H +#define __GTK_2_3_COMPAT_H + +#include +#include + +#if GTK_MAJOR_VERSION >= 3 +#define GDK_COMPAT_WINDOW_XID(window) (gdk_x11_window_get_xid (window)) +#else +#define GDK_WINDOWING_X11 +#define GDK_IS_X11_WINDOW(window) TRUE +#define GDK_IS_X11_DISPLAY(display) TRUE +#define GDK_COMPAT_WINDOW_XID(window) (GDK_WINDOW_XWINDOW (window)) +#endif + +#endif diff --git a/gtk/src/gtk_display.cpp b/gtk/src/gtk_display.cpp index 4f8b1398..ace8be80 100644 --- a/gtk/src/gtk_display.cpp +++ b/gtk/src/gtk_display.cpp @@ -1,3 +1,4 @@ +#include "gtk_2_3_compat.h" #include #ifdef GDK_WINDOWING_X11 #include @@ -1560,22 +1561,6 @@ S9xQueryDrivers () bool8 S9xDeinitUpdate (int width, int height) -{ - GdkWindow *gdk_window = gtk_widget_get_window (GTK_WIDGET (top_level->get_window ())); - -#ifdef GDK_WINDOWING_WAYLAND - if (GDK_IS_WAYLAND_WINDOW (gdk_window) && gui_config->hw_accel == 0) - { - gtk_widget_queue_draw (GTK_WIDGET (top_level->drawing_area)); - return TRUE; - } -#endif - - return S9xRealDeinitUpdate (width, height); -} - -bool8 -S9xRealDeinitUpdate (int width, int height) { int yoffset = 0; diff --git a/gtk/src/gtk_display.h b/gtk/src/gtk_display.h index c6154e8f..318c6014 100644 --- a/gtk/src/gtk_display.h +++ b/gtk/src/gtk_display.h @@ -123,7 +123,6 @@ void S9xDisplayClearBuffers (); void S9xReinitDisplay (); void S9xDisplayReconfigure (); void S9xQueryDrivers (); -bool8 S9xRealDeinitUpdate (int width, int height); S9xDisplayDriver *S9xDisplayGetDriver (); diff --git a/gtk/src/gtk_display_driver_opengl.cpp b/gtk/src/gtk_display_driver_opengl.cpp index 8b825d1f..69897d12 100644 --- a/gtk/src/gtk_display_driver_opengl.cpp +++ b/gtk/src/gtk_display_driver_opengl.cpp @@ -656,7 +656,7 @@ int S9xOpenGLDisplayDriver::query_availability () #ifdef GDK_WINDOWING_X11 if (GDK_IS_X11_DISPLAY (gdk_display)) { - Display *dpy = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()); + Display *dpy = GDK_DISPLAY_XDISPLAY (gdk_display); if (glXQueryExtension (dpy, NULL, NULL) == True) { diff --git a/gtk/src/gtk_display_driver_opengl.h b/gtk/src/gtk_display_driver_opengl.h index d3969fa1..28b445fc 100644 --- a/gtk/src/gtk_display_driver_opengl.h +++ b/gtk/src/gtk_display_driver_opengl.h @@ -7,6 +7,8 @@ #include #include "gtk_opengl_context.h" + +#include "gtk_2_3_compat.h" #ifdef GDK_WINDOWING_X11 #include "gtk_glx_context.h" #endif diff --git a/gtk/src/gtk_display_driver_xv.cpp b/gtk/src/gtk_display_driver_xv.cpp index 09571bf3..1b2cd3de 100644 --- a/gtk/src/gtk_display_driver_xv.cpp +++ b/gtk/src/gtk_display_driver_xv.cpp @@ -1,5 +1,6 @@ #include #include +#include "gtk_2_3_compat.h" #include #include #include diff --git a/gtk/src/gtk_glx_context.cpp b/gtk/src/gtk_glx_context.cpp index 0eb19db6..65d9c8ce 100644 --- a/gtk/src/gtk_glx_context.cpp +++ b/gtk/src/gtk_glx_context.cpp @@ -3,6 +3,7 @@ #include "gtk_s9x.h" #include "gtk_glx_context.h" +#include "gtk_2_3_compat.h" GTKGLXContext::GTKGLXContext () { @@ -72,8 +73,13 @@ bool GTKGLXContext::attach (GtkWidget *widget) vi = glXGetVisualFromFBConfig (display, fbconfig); - gdk_window_get_geometry (window, &x, &y, &width, &height); +#if GTK_MAJOR_VERSION < 3 + gdk_window_get_geometry (parent_gdk_window, &x, &y, &width, &height, NULL); +#else + gdk_window_get_geometry (parent_gdk_window, &x, &y, &width, &height); +#endif memset (&window_attr, 0, sizeof (GdkWindowAttr)); + window_attr.event_mask = GDK_EXPOSURE_MASK | GDK_STRUCTURE_MASK; window_attr.width = width; window_attr.height = height; window_attr.wclass = GDK_INPUT_OUTPUT; @@ -115,7 +121,11 @@ bool GTKGLXContext::create_context () void GTKGLXContext::resize () { +#if GTK_MAJOR_VERSION < 3 + gdk_window_get_geometry (parent_gdk_window, &x, &y, &width, &height, NULL); +#else gdk_window_get_geometry (parent_gdk_window, &x, &y, &width, &height); +#endif if (window_attr.width == width && window_attr.height == height) return; diff --git a/gtk/src/gtk_preferences.cpp b/gtk/src/gtk_preferences.cpp index 1fa09610..fb216a31 100644 --- a/gtk/src/gtk_preferences.cpp +++ b/gtk/src/gtk_preferences.cpp @@ -1,6 +1,7 @@ #include #include #include +#include "gtk_2_3_compat.h" #ifdef GDK_WINDOWING_X11 #include #endif diff --git a/gtk/src/gtk_s9x.cpp b/gtk/src/gtk_s9x.cpp index b20b0759..42669f9d 100644 --- a/gtk/src/gtk_s9x.cpp +++ b/gtk/src/gtk_s9x.cpp @@ -1,6 +1,7 @@ #include #include #include +#include "gtk_2_3_compat.h" #ifdef GDK_WINDOWING_X11 #include #endif diff --git a/gtk/src/gtk_s9x.h b/gtk/src/gtk_s9x.h index ab648845..6920b273 100644 --- a/gtk/src/gtk_s9x.h +++ b/gtk/src/gtk_s9x.h @@ -36,15 +36,6 @@ extern Snes9xWindow *top_level; extern Snes9xConfig *gui_config; -#if GTK_MAJOR_VERSION >= 3 -#define GDK_COMPAT_WINDOW_XID(window) (gdk_x11_window_get_xid (window)) -#else -#define GDK_WINDOWING_X11 -#define GDK_IS_X11_WINDOW(window) TRUE -#define GDK_IS_X11_DISPLAY(display) TRUE -#define GDK_COMPAT_WINDOW_XID(window) (GDK_WINDOW_XWINDOW (window)) -#endif - int S9xOpenROM (const char *filename); void S9xNoROMLoaded (); void S9xROMLoaded (); diff --git a/gtk/src/gtk_s9xwindow.cpp b/gtk/src/gtk_s9xwindow.cpp index 2e2a79de..f416827d 100644 --- a/gtk/src/gtk_s9xwindow.cpp +++ b/gtk/src/gtk_s9xwindow.cpp @@ -1,13 +1,14 @@ +#include "gtk_2_3_compat.h" #include #ifdef GDK_WINDOWING_X11 #include +#include #endif #ifdef GDK_WINDOWING_WAYLAND #include #endif #include #include -#include #ifdef USE_XV #include @@ -623,6 +624,7 @@ Snes9xWindow::Snes9xWindow (Snes9xConfig *config) : #if GTK_MAJOR_VERSION < 3 gtk_widget_set_double_buffered (GTK_WIDGET (drawing_area), FALSE); gtk_widget_set_app_paintable (GTK_WIDGET (drawing_area), TRUE); + #endif if (config->use_headerbar) @@ -789,29 +791,14 @@ Snes9xWindow::expose () config->window_height = get_height (); } -#ifdef GDK_WINDOWING_X11 - if (GDK_IS_X11_WINDOW (gtk_widget_get_window (window))) - { - if (is_paused () + if (is_paused () #ifdef NETPLAY_SUPPORT || NetPlay.Paused #endif ) - { - S9xDeinitUpdate (last_width, last_height); - } - - return; - } -#endif - -#ifdef GDK_WINDOWING_WAYLAND - if (GDK_IS_WAYLAND_WINDOW (gtk_widget_get_window (window))) { - if (config->hw_accel == HWA_NONE || is_paused ()) - S9xRealDeinitUpdate (last_width, last_height); + S9xDeinitUpdate (last_width, last_height); } -#endif } void diff --git a/gtk/src/snes9x.ui b/gtk/src/snes9x.ui index 74610a73..6cff9698 100644 --- a/gtk/src/snes9x.ui +++ b/gtk/src/snes9x.ui @@ -7425,11 +7425,11 @@ queue none - + True 5 - + True False 10 @@ -7438,7 +7438,7 @@ 10 5 - + True False 0 @@ -7471,7 +7471,7 @@ - + True False 0 @@ -7504,7 +7504,7 @@ - + True False 0 @@ -7537,7 +7537,7 @@ - + True False 0 @@ -7570,7 +7570,7 @@ - + True False 0 @@ -7603,7 +7603,7 @@ - + True False 0