1
+ #if BOOST_OS_LINUX
2
+ #include < gtk/gtk.h>
3
+ #include < gdk/gdk.h>
4
+ #include < gdk/gdkwindow.h>
5
+ #include < gdk/gdkx.h>
6
+ #endif
7
+
1
8
#include " gui/wxgui.h"
2
9
#include " gui/guiWrapper.h"
3
10
#include " gui/CemuApp.h"
@@ -156,63 +163,26 @@ bool gui_isPadWindowOpen()
156
163
}
157
164
158
165
#if BOOST_OS_LINUX
159
- #include < wx/nativewin.h>
160
- #include < dlfcn.h>
161
-
162
- typedef void GdkDisplay;
163
- namespace
164
- {
165
- const char * (*gdk_keyval_name)(unsigned int keyval);
166
- }
167
166
std::string gui_gtkRawKeyCodeToString (uint32 keyCode)
168
167
{
169
168
return gdk_keyval_name (keyCode);
170
169
}
171
-
172
170
#endif
173
171
174
172
void gui_initHandleContextFromWxWidgetsWindow (WindowHandleInfo& handleInfoOut, class wxWindow * wxw)
175
173
{
176
174
#if BOOST_OS_WINDOWS
177
175
handleInfoOut.hwnd = wxw->GetHWND ();
178
176
#elif BOOST_OS_LINUX
179
- /* dynamically retrieve GTK imports so we dont have to include and link the whole lib */
180
- void (*dyn_gtk_widget_realize)(GtkWidget *widget);
181
- dyn_gtk_widget_realize = (void (*)(GtkWidget* widget))dlsym (RTLD_NEXT, " gtk_widget_realize" );
182
-
183
- GdkWindow* (*dyn_gtk_widget_get_window)(GtkWidget *widget);
184
- dyn_gtk_widget_get_window = (GdkWindow*(*)(GtkWidget* widget))dlsym (RTLD_NEXT, " gtk_widget_get_window" );
185
-
186
- GdkDisplay* (*dyn_gdk_window_get_display)(GdkWindow *widget);
187
- dyn_gdk_window_get_display = (GdkDisplay*(*)(GdkWindow* window))dlsym (RTLD_NEXT, " gdk_window_get_display" );
188
-
189
- Display* (*dyn_gdk_x11_display_get_xdisplay)(GdkDisplay *display);
190
- dyn_gdk_x11_display_get_xdisplay = (Display*(*)(GdkDisplay* display))dlsym (RTLD_NEXT, " gdk_x11_display_get_xdisplay" );
191
-
192
- Window (*dyn_gdk_x11_window_get_xid)(GdkWindow *window);
193
- dyn_gdk_x11_window_get_xid = (Window (*)(GdkWindow *window))dlsym (RTLD_NEXT, " gdk_x11_window_get_xid" );
194
-
195
- gdk_keyval_name = (const char * (*)(unsigned int ))dlsym (RTLD_NEXT, " gdk_keyval_name" );
196
-
197
- if (!dyn_gtk_widget_realize || !dyn_gtk_widget_get_window ||
198
- !dyn_gdk_window_get_display || !dyn_gdk_x11_display_get_xdisplay ||
199
- !dyn_gdk_x11_window_get_xid || !gdk_keyval_name)
200
- {
201
- cemuLog_log (LogType::Force, " Unable to load GDK symbols" );
202
- return ;
203
- }
204
-
205
- /* end of imports */
206
-
207
177
// get window
208
178
GtkWidget* gtkWidget = (GtkWidget*)wxw->GetHandle (); // returns GtkWidget
209
- dyn_gtk_widget_realize (gtkWidget);
210
- GdkWindow* gdkWindow = dyn_gtk_widget_get_window (gtkWidget);
211
- handleInfoOut.xlib_window = dyn_gdk_x11_window_get_xid (gdkWindow);
179
+ gtk_widget_realize (gtkWidget);
180
+ GdkWindow* gdkWindow = gtk_widget_get_window (gtkWidget);
181
+ handleInfoOut.xlib_window = gdk_x11_window_get_xid (gdkWindow);
212
182
213
183
// get display
214
- GdkDisplay* gdkDisplay = dyn_gdk_window_get_display (gdkWindow);
215
- handleInfoOut.xlib_display = dyn_gdk_x11_display_get_xdisplay (gdkDisplay);
184
+ GdkDisplay* gdkDisplay = gdk_window_get_display (gdkWindow);
185
+ handleInfoOut.xlib_display = gdk_x11_display_get_xdisplay (gdkDisplay);
216
186
if (!handleInfoOut.xlib_display )
217
187
{
218
188
cemuLog_log (LogType::Force, " Unable to get xlib display" );
@@ -222,11 +192,16 @@ void gui_initHandleContextFromWxWidgetsWindow(WindowHandleInfo& handleInfoOut, c
222
192
#endif
223
193
}
224
194
225
- bool gui_isKeyDown (int key)
195
+ bool gui_isKeyDown (uint32 key)
226
196
{
227
197
return g_window_info.get_keystate (key);
228
198
}
229
199
200
+ bool gui_isKeyDown (PlatformKeyCodes key)
201
+ {
202
+ return gui_isKeyDown ((std::underlying_type_t <PlatformKeyCodes>)key);
203
+ }
204
+
230
205
void gui_notifyGameLoaded ()
231
206
{
232
207
std::shared_lock lock (g_mutex);
@@ -311,4 +286,4 @@ void debuggerWindow_notifyModuleUnloaded(void* module)
311
286
evt->SetClientData (module );
312
287
wxQueueEvent (g_debugger_window, evt);
313
288
}
314
- }
289
+ }
0 commit comments