diff --git a/gfx/common/win32_common.c b/gfx/common/win32_common.c index d8ab3bf56f..bfe099bcda 100644 --- a/gfx/common/win32_common.c +++ b/gfx/common/win32_common.c @@ -992,6 +992,7 @@ bool win32_window_create(void *data, unsigned style, video_driver_display_type_set(RARCH_DISPLAY_WIN32); video_driver_display_set(0); + video_driver_display_userdata_set((uintptr_t)&main_window); video_driver_window_set((uintptr_t)main_window.hwnd); #if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0500 /* 2K */ diff --git a/gfx/drivers/sdl2_gfx.c b/gfx/drivers/sdl2_gfx.c index 7d4867b802..e4a2b12c46 100644 --- a/gfx/drivers/sdl2_gfx.c +++ b/gfx/drivers/sdl2_gfx.c @@ -221,6 +221,7 @@ static void sdl2_gfx_set_handles(sdl2_video_t *vid) if (SDL_GetWindowWMInfo(vid->window, &info) != 1) return; + video_driver_display_userdata_set((uintptr_t)vid->window); #if defined(_WIN32) video_driver_display_type_set(RARCH_DISPLAY_WIN32); video_driver_display_set(0); @@ -522,7 +523,7 @@ static bool sdl2_gfx_frame(void *data, const void *frame, unsigned width, video_driver_get_window_title(title, sizeof(title)); if (title[0]) - SDL_SetWindowTitle(vid->window, title); + SDL_SetWindowTitle((SDL_Window*)video_driver_display_userdata_get(), title); return true; } diff --git a/retroarch.c b/retroarch.c index e0c569fc41..9d9a0239ac 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1436,6 +1436,7 @@ static gfx_api_gpu_map gpu_map[] = { * Used by e.g. input drivers which bind to a window. * Drivers are responsible for setting these if an input driver * could potentially make use of this. */ +static uintptr_t video_driver_display_userdata = 0; static uintptr_t video_driver_display = 0; static uintptr_t video_driver_window = 0; @@ -18034,6 +18035,7 @@ static bool video_driver_init_internal(bool *video_is_threaded) video_driver_display_type_set(RARCH_DISPLAY_NONE); video_driver_display_set(0); + video_driver_display_userdata_set(0); video_driver_window_set(0); if (!video_driver_pixel_converter_init(RARCH_SCALE_BASE * scale)) @@ -19383,6 +19385,16 @@ uintptr_t video_driver_display_get(void) return video_driver_display; } +uintptr_t video_driver_display_userdata_get(void) +{ + return video_driver_display_userdata; +} + +void video_driver_display_userdata_set(uintptr_t idx) +{ + video_driver_display_userdata = idx; +} + void video_driver_display_set(uintptr_t idx) { video_driver_display = idx; diff --git a/retroarch.h b/retroarch.h index b0591f5ab1..d14bff2d34 100644 --- a/retroarch.h +++ b/retroarch.h @@ -1786,6 +1786,8 @@ bool video_driver_translate_coord_viewport( int16_t *res_x, int16_t *res_y, int16_t *res_screen_x, int16_t *res_screen_y); +uintptr_t video_driver_display_userdata_get(void); + uintptr_t video_driver_display_get(void); enum rarch_display_type video_driver_display_type_get(void); @@ -1796,6 +1798,8 @@ void video_driver_display_type_set(enum rarch_display_type type); void video_driver_display_set(uintptr_t idx); +void video_driver_display_userdata_set(uintptr_t idx); + void video_driver_window_set(uintptr_t idx); uintptr_t video_driver_window_get(void);