0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-19 20:32:15 +02:00

libobs-opengl: Remove unnecessary call to retrieve screen number

The code to retrieve the screen number was originally implemented for
GLX but not necessary for EGL.
This commit is contained in:
Norihiro Kamae 2022-06-08 19:05:14 +09:00 committed by Georges Basile Stavracas Neto
parent 6c39b023ad
commit f4854dccb4

View File

@ -84,58 +84,7 @@ struct gl_platform {
EGLSurface pbuffer;
};
/* The following utility functions are copied verbatim from GLX code. */
/*
* Since we cannot take advantage of the asynchronous nature of xcb,
* all of the helper functions are synchronous but thread-safe.
*
* They check for errors and will return 0 on problems
* with the exception of when 0 is a valid return value... in which case
* read the specific function comments.
*/
/* Returns -1 on invalid screen. */
static int get_screen_num_from_xcb_screen(xcb_connection_t *xcb_conn,
xcb_screen_t *screen)
{
xcb_screen_iterator_t iter =
xcb_setup_roots_iterator(xcb_get_setup(xcb_conn));
int screen_num = 0;
for (; iter.rem; xcb_screen_next(&iter), ++screen_num)
if (iter.data == screen)
return screen_num;
return -1;
}
static xcb_screen_t *get_screen_from_root(xcb_connection_t *xcb_conn,
xcb_window_t root)
{
xcb_screen_iterator_t iter =
xcb_setup_roots_iterator(xcb_get_setup(xcb_conn));
while (iter.rem) {
if (iter.data->root == root)
return iter.data;
xcb_screen_next(&iter);
}
return 0;
}
static inline int get_screen_num_from_root(xcb_connection_t *xcb_conn,
xcb_window_t root)
{
xcb_screen_t *screen = get_screen_from_root(xcb_conn, root);
if (!screen)
return -1;
return get_screen_num_from_xcb_screen(xcb_conn, screen);
}
/* The following utility function is copied verbatim from GLX code. */
static xcb_get_geometry_reply_t *get_window_geometry(xcb_connection_t *xcb_conn,
xcb_drawable_t drawable)
@ -325,9 +274,6 @@ static Display *open_windowless_display(Display *platform_display)
{
Display *display;
xcb_connection_t *xcb_conn;
xcb_screen_iterator_t screen_iterator;
xcb_screen_t *screen;
int screen_num;
if (platform_display)
display = platform_display;
@ -345,19 +291,6 @@ static Display *open_windowless_display(Display *platform_display)
goto error;
}
screen_iterator = xcb_setup_roots_iterator(xcb_get_setup(xcb_conn));
screen = screen_iterator.data;
if (!screen) {
blog(LOG_ERROR, "Unable to get screen root");
goto error;
}
screen_num = get_screen_num_from_root(xcb_conn, screen->root);
if (screen_num == -1) {
blog(LOG_ERROR, "Unable to get screen number from root");
goto error;
}
if (!gladLoadEGL()) {
blog(LOG_ERROR, "Unable to load EGL entry functions.");
goto error;
@ -461,17 +394,11 @@ static bool gl_x11_egl_platform_init_swapchain(struct gs_swap_chain *swap)
get_window_geometry(xcb_conn, parent);
bool status = false;
int screen_num;
int visual;
if (!geometry)
goto fail_geometry_request;
screen_num = get_screen_num_from_root(xcb_conn, geometry->root);
if (screen_num == -1) {
goto fail_screen;
}
{
if (!eglGetConfigAttrib(plat->edisplay, plat->config,
EGL_NATIVE_VISUAL_ID,
@ -512,7 +439,6 @@ static bool gl_x11_egl_platform_init_swapchain(struct gs_swap_chain *swap)
fail_window_surface:
fail_visual_id:
fail_screen:
fail_geometry_request:
success:
free(geometry);