surface: make wlr_subsurface_create private

Same as [1], but for wlr_subsurface.

[1]: https://github.com/swaywm/wlroots/pull/2814
This commit is contained in:
Simon Ser 2021-06-29 13:41:47 +02:00 committed by Simon Zeni
parent ddc98bf593
commit 7cbcc65ad0
4 changed files with 10 additions and 26 deletions

View File

@ -11,4 +11,10 @@ struct wlr_renderer;
struct wlr_surface *surface_create(struct wl_client *client, struct wlr_surface *surface_create(struct wl_client *client,
uint32_t version, uint32_t id, struct wlr_renderer *renderer); uint32_t version, uint32_t id, struct wlr_renderer *renderer);
/**
* Create a new subsurface resource with the provided new ID.
*/
struct wlr_subsurface *subsurface_create(struct wlr_surface *surface,
struct wlr_surface *parent, uint32_t version, uint32_t id);
#endif #endif

View File

@ -213,14 +213,6 @@ bool wlr_surface_has_buffer(struct wlr_surface *surface);
*/ */
struct wlr_texture *wlr_surface_get_texture(struct wlr_surface *surface); struct wlr_texture *wlr_surface_get_texture(struct wlr_surface *surface);
/**
* Create a new subsurface resource with the provided new ID. If `resource_list`
* is non-NULL, adds the subsurface's resource to the list.
*/
struct wlr_subsurface *wlr_subsurface_create(struct wlr_surface *surface,
struct wlr_surface *parent, uint32_t version, uint32_t id,
struct wl_list *resource_list);
/** /**
* Get the root of the subsurface tree for this surface. Can return NULL if * Get the root of the subsurface tree for this surface. Can return NULL if
* a surface in the tree has been destroyed. * a surface in the tree has been destroyed.

View File

@ -67,8 +67,7 @@ static void subcompositor_handle_get_subsurface(struct wl_client *client,
return; return;
} }
wlr_subsurface_create(surface, parent, wl_resource_get_version(resource), subsurface_create(surface, parent, wl_resource_get_version(resource), id);
id, NULL);
} }
static const struct wl_subcompositor_interface subcompositor_impl = { static const struct wl_subcompositor_interface subcompositor_impl = {

View File

@ -15,7 +15,6 @@
#include "util/time.h" #include "util/time.h"
#define CALLBACK_VERSION 1 #define CALLBACK_VERSION 1
#define SUBSURFACE_VERSION 1
static int min(int fst, int snd) { static int min(int fst, int snd) {
if (fst < snd) { if (fst < snd) {
@ -860,7 +859,6 @@ static struct wlr_subsurface *subsurface_from_resource(
static void subsurface_resource_destroy(struct wl_resource *resource) { static void subsurface_resource_destroy(struct wl_resource *resource) {
struct wlr_subsurface *subsurface = subsurface_from_resource(resource); struct wlr_subsurface *subsurface = subsurface_from_resource(resource);
wl_list_remove(wl_resource_get_link(resource));
subsurface_destroy(subsurface); subsurface_destroy(subsurface);
} }
@ -1133,11 +1131,8 @@ static void subsurface_handle_surface_destroy(struct wl_listener *listener,
subsurface_destroy(subsurface); subsurface_destroy(subsurface);
} }
struct wlr_subsurface *wlr_subsurface_create(struct wlr_surface *surface, struct wlr_subsurface *subsurface_create(struct wlr_surface *surface,
struct wlr_surface *parent, uint32_t version, uint32_t id, struct wlr_surface *parent, uint32_t version, uint32_t id) {
struct wl_list *resource_list) {
assert(version <= SUBSURFACE_VERSION);
struct wl_client *client = wl_resource_get_client(surface->resource); struct wl_client *client = wl_resource_get_client(surface->resource);
struct wlr_subsurface *subsurface = struct wlr_subsurface *subsurface =
@ -1156,8 +1151,7 @@ struct wlr_subsurface *wlr_subsurface_create(struct wlr_surface *surface,
return NULL; return NULL;
} }
wl_resource_set_implementation(subsurface->resource, wl_resource_set_implementation(subsurface->resource,
&subsurface_implementation, subsurface, &subsurface_implementation, subsurface, subsurface_resource_destroy);
subsurface_resource_destroy);
wl_signal_init(&subsurface->events.destroy); wl_signal_init(&subsurface->events.destroy);
wl_signal_init(&subsurface->events.map); wl_signal_init(&subsurface->events.map);
@ -1176,13 +1170,6 @@ struct wlr_subsurface *wlr_subsurface_create(struct wlr_surface *surface,
surface->role_data = subsurface; surface->role_data = subsurface;
struct wl_list *resource_link = wl_resource_get_link(subsurface->resource);
if (resource_list != NULL) {
wl_list_insert(resource_list, resource_link);
} else {
wl_list_init(resource_link);
}
wlr_signal_emit_safe(&parent->events.new_subsurface, subsurface); wlr_signal_emit_safe(&parent->events.new_subsurface, subsurface);
return subsurface; return subsurface;