libweston: introduce weston_output_from_resource()
This is a simple wrapper for casting the user data of a wl_resource into a struct weston_output pointer. Using the wrapper clearly marks all the places where a wl_output protocol object is used. Replace ALL wl_output related calls to wl_resource_get_user_data() with a call to weston_output_from_resource(). v2: add type assert in weston_output_from_resource(). Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by: Armin Krezović <krezovic.armin@gmail.com>
This commit is contained in:
parent
0079a949e0
commit
9ffb25009c
@ -66,7 +66,7 @@ screenshooter_shoot(struct wl_client *client,
|
||||
struct wl_resource *buffer_resource)
|
||||
{
|
||||
struct weston_output *output =
|
||||
wl_resource_get_user_data(output_resource);
|
||||
weston_output_from_resource(output_resource);
|
||||
struct weston_buffer *buffer =
|
||||
weston_buffer_from_resource(buffer_resource);
|
||||
|
||||
|
@ -274,7 +274,7 @@ input_panel_surface_set_toplevel(struct wl_client *client,
|
||||
wl_list_insert(&shell->input_panel.surfaces,
|
||||
&input_panel_surface->link);
|
||||
|
||||
input_panel_surface->output = wl_resource_get_user_data(output_resource);
|
||||
input_panel_surface->output = weston_output_from_resource(output_resource);
|
||||
input_panel_surface->panel = 0;
|
||||
}
|
||||
|
||||
|
@ -2941,7 +2941,7 @@ desktop_shell_set_background(struct wl_client *client,
|
||||
surface->committed = background_committed;
|
||||
surface->committed_private = shell;
|
||||
weston_surface_set_label_func(surface, background_get_label);
|
||||
surface->output = wl_resource_get_user_data(output_resource);
|
||||
surface->output = weston_output_from_resource(output_resource);
|
||||
view->output = surface->output;
|
||||
weston_desktop_shell_send_configure(resource, 0,
|
||||
surface_resource,
|
||||
@ -3026,7 +3026,7 @@ desktop_shell_set_panel(struct wl_client *client,
|
||||
surface->committed = panel_committed;
|
||||
surface->committed_private = shell;
|
||||
weston_surface_set_label_func(surface, panel_get_label);
|
||||
surface->output = wl_resource_get_user_data(output_resource);
|
||||
surface->output = weston_output_from_resource(output_resource);
|
||||
view->output = surface->output;
|
||||
weston_desktop_shell_send_configure(resource, 0,
|
||||
surface_resource,
|
||||
|
@ -769,7 +769,7 @@ fullscreen_shell_present_surface(struct wl_client *client,
|
||||
}
|
||||
|
||||
if (output_res) {
|
||||
output = wl_resource_get_user_data(output_res);
|
||||
output = weston_output_from_resource(output_res);
|
||||
fsout = fs_output_for_output(output);
|
||||
fs_output_set_surface(fsout, surface, method, 0, 0);
|
||||
} else {
|
||||
@ -813,7 +813,7 @@ fullscreen_shell_present_surface_for_mode(struct wl_client *client,
|
||||
struct weston_seat *seat;
|
||||
struct fs_output *fsout;
|
||||
|
||||
output = wl_resource_get_user_data(output_res);
|
||||
output = weston_output_from_resource(output_res);
|
||||
fsout = fs_output_for_output(output);
|
||||
|
||||
if (surface_res == NULL) {
|
||||
|
@ -275,7 +275,7 @@ input_panel_surface_set_toplevel(struct wl_client *client,
|
||||
wl_list_insert(&shell->input_panel.surfaces,
|
||||
&input_panel_surface->link);
|
||||
|
||||
input_panel_surface->output = wl_resource_get_user_data(output_resource);
|
||||
input_panel_surface->output = weston_output_from_resource(output_resource);
|
||||
input_panel_surface->panel = 0;
|
||||
}
|
||||
|
||||
|
@ -302,7 +302,7 @@ weston_desktop_wl_shell_surface_protocol_set_fullscreen(struct wl_client *wl_cli
|
||||
struct weston_output *output = NULL;
|
||||
|
||||
if (output_resource != NULL)
|
||||
output = wl_resource_get_user_data(output_resource);
|
||||
output = weston_output_from_resource(output_resource);
|
||||
|
||||
weston_desktop_wl_shell_change_state(surface, FULLSCREEN, NULL, 0, 0);
|
||||
weston_desktop_api_fullscreen_requested(surface->desktop, dsurface,
|
||||
|
@ -553,7 +553,7 @@ weston_desktop_xdg_surface_protocol_set_fullscreen(struct wl_client *wl_client,
|
||||
struct weston_output *output = NULL;
|
||||
|
||||
if (output_resource != NULL)
|
||||
output = wl_resource_get_user_data(output_resource);
|
||||
output = weston_output_from_resource(output_resource);
|
||||
|
||||
weston_desktop_xdg_surface_ensure_added(surface);
|
||||
weston_desktop_api_fullscreen_requested(surface->desktop, dsurface,
|
||||
|
@ -507,7 +507,7 @@ weston_desktop_xdg_toplevel_protocol_set_fullscreen(struct wl_client *wl_client,
|
||||
struct weston_output *output = NULL;
|
||||
|
||||
if (output_resource != NULL)
|
||||
output = wl_resource_get_user_data(output_resource);
|
||||
output = weston_output_from_resource(output_resource);
|
||||
|
||||
weston_desktop_xdg_toplevel_ensure_added(toplevel);
|
||||
weston_desktop_api_fullscreen_requested(toplevel->base.desktop, dsurface,
|
||||
|
@ -4323,6 +4323,22 @@ bind_output(struct wl_client *client,
|
||||
wl_output_send_done(resource);
|
||||
}
|
||||
|
||||
/** Get the backing object of wl_output
|
||||
*
|
||||
* \param resource A wl_output protocol object.
|
||||
* \return The backing object (user data) of a wl_resource representing a
|
||||
* wl_output protocol object.
|
||||
*/
|
||||
WL_EXPORT struct weston_output *
|
||||
weston_output_from_resource(struct wl_resource *resource)
|
||||
{
|
||||
assert(wl_resource_instance_of(resource, &wl_output_interface,
|
||||
&output_interface));
|
||||
|
||||
return wl_resource_get_user_data(resource);
|
||||
}
|
||||
|
||||
|
||||
/* Move other outputs when one is resized so the space remains contiguous. */
|
||||
static void
|
||||
weston_compositor_reflow_outputs(struct weston_compositor *compositor,
|
||||
|
@ -1941,6 +1941,9 @@ weston_output_disable(struct weston_output *output);
|
||||
void
|
||||
weston_pending_output_coldplug(struct weston_compositor *compositor);
|
||||
|
||||
struct weston_output *
|
||||
weston_output_from_resource(struct wl_resource *resource);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -473,7 +473,7 @@ capture_screenshot(struct wl_client *client,
|
||||
struct wl_resource *buffer_resource)
|
||||
{
|
||||
struct weston_output *output =
|
||||
wl_resource_get_user_data(output_resource);
|
||||
weston_output_from_resource(output_resource);
|
||||
struct weston_buffer *buffer =
|
||||
weston_buffer_from_resource(buffer_resource);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user