cogl/xlib-renderer: Return refresh rate directly
Instead of a CoglOutput that is then only used to fetch the refresh rate. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3792>
This commit is contained in:
parent
653ba4a7a7
commit
c9e22d9f79
3 changed files with 30 additions and 31 deletions
|
@ -56,8 +56,8 @@ _cogl_xlib_renderer_disconnect (CoglRenderer *renderer);
|
||||||
CoglXlibRenderer *
|
CoglXlibRenderer *
|
||||||
_cogl_xlib_renderer_get_data (CoglRenderer *renderer);
|
_cogl_xlib_renderer_get_data (CoglRenderer *renderer);
|
||||||
|
|
||||||
CoglOutput *
|
float
|
||||||
_cogl_xlib_renderer_output_for_rectangle (CoglRenderer *renderer,
|
_cogl_xlib_renderer_refresh_rate_for_rectangle (CoglRenderer *renderer,
|
||||||
int x,
|
int x,
|
||||||
int y,
|
int y,
|
||||||
int width,
|
int width,
|
||||||
|
|
|
@ -529,8 +529,8 @@ cogl_xlib_renderer_remove_filter (CoglRenderer *renderer,
|
||||||
(CoglNativeFilterFunc)func, data);
|
(CoglNativeFilterFunc)func, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
CoglOutput *
|
float
|
||||||
_cogl_xlib_renderer_output_for_rectangle (CoglRenderer *renderer,
|
_cogl_xlib_renderer_refresh_rate_for_rectangle (CoglRenderer *renderer,
|
||||||
int x,
|
int x,
|
||||||
int y,
|
int y,
|
||||||
int width,
|
int width,
|
||||||
|
@ -563,5 +563,8 @@ _cogl_xlib_renderer_output_for_rectangle (CoglRenderer *renderer,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return max_overlapped;
|
if (max_overlapped)
|
||||||
|
return max_overlapped->refresh_rate;
|
||||||
|
else
|
||||||
|
return 0.0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -821,22 +821,22 @@ cogl_onscreen_glx_swap_region (CoglOnscreen *onscreen,
|
||||||
onscreen_glx->last_swap_vsync_counter = end_frame_vsync_counter;
|
onscreen_glx->last_swap_vsync_counter = end_frame_vsync_counter;
|
||||||
|
|
||||||
{
|
{
|
||||||
CoglOutput *output;
|
float refresh_rate;
|
||||||
|
|
||||||
x_min = CLAMP (x_min, 0, framebuffer_width);
|
x_min = CLAMP (x_min, 0, framebuffer_width);
|
||||||
x_max = CLAMP (x_max, 0, framebuffer_width);
|
x_max = CLAMP (x_max, 0, framebuffer_width);
|
||||||
y_min = CLAMP (y_min, 0, framebuffer_height);
|
y_min = CLAMP (y_min, 0, framebuffer_height);
|
||||||
y_max = CLAMP (y_max, 0, framebuffer_height);
|
y_max = CLAMP (y_max, 0, framebuffer_height);
|
||||||
|
|
||||||
output =
|
refresh_rate =
|
||||||
_cogl_xlib_renderer_output_for_rectangle (context->display->renderer,
|
_cogl_xlib_renderer_refresh_rate_for_rectangle (context->display->renderer,
|
||||||
onscreen_glx->x + x_min,
|
onscreen_glx->x + x_min,
|
||||||
onscreen_glx->y + y_min,
|
onscreen_glx->y + y_min,
|
||||||
x_max - x_min,
|
x_max - x_min,
|
||||||
y_max - y_min);
|
y_max - y_min);
|
||||||
|
|
||||||
if (output)
|
if (refresh_rate != 0.0)
|
||||||
info->refresh_rate = output->refresh_rate;
|
info->refresh_rate = refresh_rate;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX: we don't get SwapComplete events based on how we implement
|
/* XXX: we don't get SwapComplete events based on how we implement
|
||||||
|
@ -982,20 +982,16 @@ cogl_onscreen_glx_update_output (CoglOnscreen *onscreen)
|
||||||
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
|
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
|
||||||
CoglContext *context = cogl_framebuffer_get_context (framebuffer);
|
CoglContext *context = cogl_framebuffer_get_context (framebuffer);
|
||||||
CoglDisplay *display = context->display;
|
CoglDisplay *display = context->display;
|
||||||
CoglOutput *output;
|
|
||||||
int width, height;
|
int width, height;
|
||||||
|
|
||||||
width = cogl_framebuffer_get_width (framebuffer);
|
width = cogl_framebuffer_get_width (framebuffer);
|
||||||
height = cogl_framebuffer_get_height (framebuffer);
|
height = cogl_framebuffer_get_height (framebuffer);
|
||||||
output = _cogl_xlib_renderer_output_for_rectangle (display->renderer,
|
|
||||||
|
onscreen_glx->refresh_rate =
|
||||||
|
_cogl_xlib_renderer_refresh_rate_for_rectangle (display->renderer,
|
||||||
onscreen_glx->x,
|
onscreen_glx->x,
|
||||||
onscreen_glx->y,
|
onscreen_glx->y,
|
||||||
width, height);
|
width, height);
|
||||||
|
|
||||||
if (output)
|
|
||||||
onscreen_glx->refresh_rate = output->refresh_rate;
|
|
||||||
else
|
|
||||||
onscreen_glx->refresh_rate = 0.0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Reference in a new issue