struct ds_surface;
+struct ds_surface_role
+{
+ const char *name;
+ void (*commit)(struct ds_surface *surface);
+};
+
typedef bool (*ds_surface_for_each_func_t)(struct ds_surface *surface,
int sx, int sy, void *data);
ds_surface_send_frame_done(struct ds_surface *surface,
const struct timespec *when);
+struct ds_surface *
+ds_surface_from_resource(struct wl_resource *resource);
+
+bool
+ds_surface_set_role(struct ds_surface *surface,
+ const struct ds_surface_role *role, void *role_data,
+ struct wl_resource *error_resource, uint32_t error_code);
+
+const struct ds_surface_role *
+ds_surface_get_role(struct ds_surface *surface);
+
+void *
+ds_surface_get_role_data(struct ds_surface *surface);
+
+void
+ds_surface_reset_role_data(struct ds_surface *surface);
+
#ifdef __cplusplus
}
#endif
#include "libds/surface.h"
-struct ds_surface_role
-{
- const char *name;
- void (*commit)(struct ds_surface *surface);
-};
-
struct ds_surface *
ds_surface_create(struct wl_client *client, uint32_t version, uint32_t id);
-struct ds_surface *
-ds_surface_from_resource(struct wl_resource *resource);
-
-bool
-ds_surface_set_role(struct ds_surface *surface,
- const struct ds_surface_role *role, void *role_data,
- struct wl_resource *error_resource, uint32_t error_code);
-
-const struct ds_surface_role *
-ds_surface_get_role(struct ds_surface *surface);
-
-void *
-ds_surface_get_role_data(struct ds_surface *surface);
-
-void
-ds_surface_reset_role_data(struct ds_surface *surface);
-
bool
ds_surface_has_buffer(struct ds_surface *surface);
}
}
-struct ds_surface *
-ds_surface_create(struct wl_client *client, uint32_t version, uint32_t id)
-{
- struct ds_surface *surface;
-
- surface = calloc(1, sizeof *surface);
- if (!surface) {
- wl_client_post_no_memory(client);
- return NULL;
- }
-
- surface->resource =
- wl_resource_create(client, &wl_surface_interface, version, id);
- if (!surface->resource) {
- free(surface);
- wl_client_post_no_memory(client);
- return NULL;
- }
-
- wl_resource_set_implementation(surface->resource, &surface_impl,
- surface, surface_handle_resource_destroy);
-
- surface_state_init(&surface->current);
- surface_state_init(&surface->pending);
-
- wl_signal_init(&surface->events.commit);
- wl_signal_init(&surface->events.destroy);
- wl_signal_init(&surface->events.new_subsurface);
-
- pixman_region32_init(&surface->buffer_damage);
- pixman_region32_init(&surface->opaque_region);
- pixman_region32_init(&surface->input_region);
-
- ds_inf("New ds_surface %p (res %p)", surface, surface->resource);
-
- return surface;
-}
-
-struct ds_surface *
+WL_EXPORT struct ds_surface *
ds_surface_from_resource(struct wl_resource *resource)
{
assert(wl_resource_instance_of(resource, &wl_surface_interface,
return wl_resource_get_user_data(resource);
}
-bool
+WL_EXPORT bool
ds_surface_set_role(struct ds_surface *surface,
const struct ds_surface_role *role, void *role_data,
struct wl_resource *error_resource, uint32_t error_code)
return true;
}
-const struct ds_surface_role *
+WL_EXPORT const struct ds_surface_role *
ds_surface_get_role(struct ds_surface *surface)
{
return surface->role;
}
-void *
+WL_EXPORT void *
ds_surface_get_role_data(struct ds_surface *surface)
{
return surface->role_data;
}
-void
+WL_EXPORT void
ds_surface_reset_role_data(struct ds_surface *surface)
{
surface->role_data = NULL;
}
+struct ds_surface *
+ds_surface_create(struct wl_client *client, uint32_t version, uint32_t id)
+{
+ struct ds_surface *surface;
+
+ surface = calloc(1, sizeof *surface);
+ if (!surface) {
+ wl_client_post_no_memory(client);
+ return NULL;
+ }
+
+ surface->resource =
+ wl_resource_create(client, &wl_surface_interface, version, id);
+ if (!surface->resource) {
+ free(surface);
+ wl_client_post_no_memory(client);
+ return NULL;
+ }
+
+ wl_resource_set_implementation(surface->resource, &surface_impl,
+ surface, surface_handle_resource_destroy);
+
+ surface_state_init(&surface->current);
+ surface_state_init(&surface->pending);
+
+ wl_signal_init(&surface->events.commit);
+ wl_signal_init(&surface->events.destroy);
+ wl_signal_init(&surface->events.new_subsurface);
+
+ pixman_region32_init(&surface->buffer_damage);
+ pixman_region32_init(&surface->opaque_region);
+ pixman_region32_init(&surface->input_region);
+
+ ds_inf("New ds_surface %p (res %p)", surface, surface->resource);
+
+ return surface;
+}
+
bool
ds_surface_is_ancestor_of(struct ds_surface *surface,
struct ds_surface *target_surface)