diff --git a/gfx/drivers_context/cgl_ctx.c b/gfx/drivers_context/cgl_ctx.c index 0859a2e943..a23e50a9b7 100644 --- a/gfx/drivers_context/cgl_ctx.c +++ b/gfx/drivers_context/cgl_ctx.c @@ -332,7 +332,7 @@ static bool gfx_ctx_cgl_init(void *data) CGLSetCurrentContext(cgl->glCtx); - driver->video_context_data = cgl; + gfx_ctx_data_set(cgl); return true; diff --git a/gfx/drivers_context/drm_egl_ctx.c b/gfx/drivers_context/drm_egl_ctx.c index f69feff90e..66f4dfb7a8 100644 --- a/gfx/drivers_context/drm_egl_ctx.c +++ b/gfx/drivers_context/drm_egl_ctx.c @@ -509,7 +509,7 @@ nextgpu: dir_list_free(gpu_descriptors); - driver->video_context_data = drm; + gfx_ctx_data_set(drm); return true; diff --git a/gfx/drivers_context/glx_ctx.c b/gfx/drivers_context/glx_ctx.c index 6c09f3a74d..339993ff7e 100644 --- a/gfx/drivers_context/glx_ctx.c +++ b/gfx/drivers_context/glx_ctx.c @@ -261,7 +261,7 @@ static bool gfx_ctx_glx_init(void *data) glx->g_fbc = fbcs[0]; XFree(fbcs); - driver->video_context_data = glx; + gfx_ctx_data_set(glx); return true; diff --git a/gfx/drivers_context/ps3_ctx.c b/gfx/drivers_context/ps3_ctx.c index 49c41ca397..8ff8b0cba5 100644 --- a/gfx/drivers_context/ps3_ctx.c +++ b/gfx/drivers_context/ps3_ctx.c @@ -292,7 +292,7 @@ static bool gfx_ctx_ps3_init(void *data) gfx_ctx_ps3_get_available_resolutions(); - driver->video_context_data = ps3; + gfx_ctx_data_set(ps3); return true; } diff --git a/gfx/drivers_context/sdl_gl_ctx.c b/gfx/drivers_context/sdl_gl_ctx.c index 58eb4a1f2c..0d46696345 100644 --- a/gfx/drivers_context/sdl_gl_ctx.c +++ b/gfx/drivers_context/sdl_gl_ctx.c @@ -93,7 +93,7 @@ static bool sdl_ctx_init(void *data) RARCH_LOG("[SDL_GL] SDL %i.%i.%i gfx context driver initialized.\n", SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL); - driver->video_context_data = sdl; + gfx_ctx_data_set(sdl); return true; diff --git a/gfx/drivers_context/wayland_ctx.c b/gfx/drivers_context/wayland_ctx.c index 653bffa65c..e756f5e02e 100644 --- a/gfx/drivers_context/wayland_ctx.c +++ b/gfx/drivers_context/wayland_ctx.c @@ -337,7 +337,7 @@ static bool gfx_ctx_wl_init(void *data) goto error; } - driver->video_context_data = wl; + gfx_ctx_data_set(wl); wl->g_registry = wl_display_get_registry(wl->g_dpy); wl_registry_add_listener(wl->g_registry, ®istry_listener, NULL); diff --git a/gfx/video_context_driver.c b/gfx/video_context_driver.c index ade25243ac..4f46545f13 100644 --- a/gfx/video_context_driver.c +++ b/gfx/video_context_driver.c @@ -87,6 +87,14 @@ void *gfx_ctx_data_get_ptr(void) return driver->video_context_data; } +void gfx_ctx_data_set(void *ptr) +{ + driver_t *driver = driver_get_ptr(); + if (!driver || !ptr) + return; + driver->video_context_data = ptr; +} + void gfx_ctx_free_data(void) { driver_t *driver = driver_get_ptr(); diff --git a/gfx/video_context_driver.h b/gfx/video_context_driver.h index 3e76a902d0..93ee8c47de 100644 --- a/gfx/video_context_driver.h +++ b/gfx/video_context_driver.h @@ -256,6 +256,8 @@ retro_proc_address_t gfx_ctx_get_proc_address(const char *sym); void *gfx_ctx_data_get_ptr(void); +void gfx_ctx_data_set(void *ptr); + void gfx_ctx_free_data(void); #ifdef __cplusplus