libobs: Add graphics API to get graphics object pointer

master
jp9000 2019-08-29 12:43:10 -07:00
parent 86572935af
commit bf41fd5a6b
9 changed files with 32 additions and 0 deletions

View File

@ -829,6 +829,11 @@ void device_leave_context(gs_device_t *device)
UNUSED_PARAMETER(device);
}
void *device_get_device_obj(gs_device_t *device)
{
return (void *)device->device.Get();
}
gs_swapchain_t *device_swapchain_create(gs_device_t *device,
const struct gs_init_data *data)
{

View File

@ -165,6 +165,11 @@ void device_leave_context(gs_device_t *device)
[NSOpenGLContext clearCurrentContext];
}
void *device_get_device_obj(gs_device_t *device)
{
return device->plat->context;
}
void device_load_swapchain(gs_device_t *device, gs_swapchain_t *swap)
{
if (device->cur_swap == swap)

View File

@ -542,6 +542,11 @@ void device_leave_context(gs_device_t *device)
UNUSED_PARAMETER(device);
}
void *device_get_device_obj(gs_device_t *device)
{
return device->plat->hrc;
}
void device_load_swapchain(gs_device_t *device, gs_swapchain_t *swap)
{
HDC hdc = device->plat->window.hdc;

View File

@ -510,6 +510,11 @@ extern void device_leave_context(gs_device_t *device)
}
}
void *device_get_device_obj(gs_device_t *device)
{
return device->plat->context;
}
extern void gl_getclientsize(const struct gs_swap_chain *swap, uint32_t *width,
uint32_t *height)
{

View File

@ -33,6 +33,7 @@ EXPORT int device_create(gs_device_t **device, uint32_t adapter);
EXPORT void device_destroy(gs_device_t *device);
EXPORT void device_enter_context(gs_device_t *device);
EXPORT void device_leave_context(gs_device_t *device);
EXPORT void *device_get_device_obj(gs_device_t *device);
EXPORT gs_swapchain_t *device_swapchain_create(gs_device_t *device,
const struct gs_init_data *data);
EXPORT void device_resize(gs_device_t *device, uint32_t x, uint32_t y);

View File

@ -50,6 +50,7 @@ bool load_graphics_imports(struct gs_exports *exports, void *module,
GRAPHICS_IMPORT(device_destroy);
GRAPHICS_IMPORT(device_enter_context);
GRAPHICS_IMPORT(device_leave_context);
GRAPHICS_IMPORT(device_get_device_obj);
GRAPHICS_IMPORT(device_swapchain_create);
GRAPHICS_IMPORT(device_resize);
GRAPHICS_IMPORT(device_get_size);

View File

@ -34,6 +34,7 @@ struct gs_exports {
void (*device_destroy)(gs_device_t *device);
void (*device_enter_context)(gs_device_t *device);
void (*device_leave_context)(gs_device_t *device);
void *(*device_get_device_obj)(gs_device_t *device);
gs_swapchain_t *(*device_swapchain_create)(
gs_device_t *device, const struct gs_init_data *data);
void (*device_resize)(gs_device_t *device, uint32_t x, uint32_t y);

View File

@ -288,6 +288,14 @@ graphics_t *gs_get_context(void)
return thread_graphics;
}
void *gs_get_device_obj(void)
{
if (!gs_valid("gs_get_device_obj"))
return NULL;
return thread_graphics->exports.device_get_device_obj(thread_graphics);
}
const char *gs_get_device_name(void)
{
return gs_valid("gs_get_device_name")

View File

@ -500,6 +500,7 @@ EXPORT void gs_destroy(graphics_t *graphics);
EXPORT void gs_enter_context(graphics_t *graphics);
EXPORT void gs_leave_context(void);
EXPORT graphics_t *gs_get_context(void);
EXPORT void *gs_get_device_obj(void);
EXPORT void gs_matrix_push(void);
EXPORT void gs_matrix_pop(void);