[digesting_libdecor] eliminate libdecor_plugin,libdecor_plugin_gtk, and the functions from the fallback plugin

main
Allen Webster 2026-02-26 14:59:41 -08:00
parent 6c6f116885
commit af182961cc
2 changed files with 47 additions and 329 deletions

View File

@ -72,9 +72,6 @@ const struct wl_callback_listener init_wl_display_callback_listener;
const struct wl_buffer_listener buffer_listener; const struct wl_buffer_listener buffer_listener;
const struct wl_callback_listener shm_callback_listener; const struct wl_callback_listener shm_callback_listener;
struct libdecor_plugin_interface gtk_plugin_iface;
struct libdecor_plugin_interface fallback_plugin_iface;
const struct wl_shm_listener shm_listener; const struct wl_shm_listener shm_listener;
const struct wl_seat_listener seat_listener; const struct wl_seat_listener seat_listener;
const struct wl_pointer_listener pointer_listener; const struct wl_pointer_listener pointer_listener;
@ -768,8 +765,7 @@ frame_get_window_size_for(struct libdecor_frame *frame,
if (frame_has_visible_client_side_decoration(frame)) { if (frame_has_visible_client_side_decoration(frame)) {
int left, right, top, bottom; int left, right, top, bottom;
if (!libdecor_plugin_gtk_frame_get_border_size(0, frame, NULL, if (!libdecor_plugin_gtk_frame_get_border_size(frame, NULL, &left, &right, &top, &bottom)){
&left, &right, &top, &bottom)){
return false; return false;
} }
*window_width += left + right; *window_width += left + right;
@ -787,8 +783,7 @@ frame_set_window_geometry(struct libdecor_frame *frame,
int left, right, top, bottom; int left, right, top, bottom;
if (frame_has_visible_client_side_decoration(frame) && if (frame_has_visible_client_side_decoration(frame) &&
libdecor_plugin_gtk_frame_get_border_size(0, frame, NULL, libdecor_plugin_gtk_frame_get_border_size(frame, NULL, &left, &right, &top, &bottom)) {
&left, &right, &top, &bottom)) {
x = -left; x = -left;
y = -top; y = -top;
width = content_width + left + right; width = content_width + left + right;
@ -825,7 +820,7 @@ libdecor_configuration_get_content_size(struct libdecor_configuration *configura
/* Update window state for correct border size calculation */ /* Update window state for correct border size calculation */
frame->priv->window_state = configuration->window_state; frame->priv->window_state = configuration->window_state;
if (!libdecor_plugin_gtk_frame_get_border_size(0, frame, configuration, &left, &right, &top, &bottom)){ if (!libdecor_plugin_gtk_frame_get_border_size(frame, configuration, &left, &right, &top, &bottom)){
return false; return false;
} }
@ -984,8 +979,7 @@ xdg_toplevel_configure_bounds(void *user_data,
int left = 0, top = 0, right = 0, bottom = 0; int left = 0, top = 0, right = 0, bottom = 0;
if (frame_has_visible_client_side_decoration(frame)) { if (frame_has_visible_client_side_decoration(frame)) {
libdecor_plugin_gtk_frame_get_border_size(0, frame, NULL, libdecor_plugin_gtk_frame_get_border_size(frame, NULL, &left, &right, &top, &bottom);
&left, &right, &top, &bottom);
} }
width -= left + right; width -= left + right;
@ -1124,7 +1118,7 @@ libdecor_decorate(struct wl_surface *wl_surface, void *user_data){
return NULL; return NULL;
} }
frame = libdecor_plugin_gtk_frame_new(0); frame = libdecor_plugin_gtk_frame_new();
if (!frame){ if (!frame){
return NULL; return NULL;
} }
@ -1185,7 +1179,7 @@ libdecor_frame_unref(struct libdecor_frame *frame)
if (frame_priv->xdg_surface) if (frame_priv->xdg_surface)
xdg_surface_destroy(frame_priv->xdg_surface); xdg_surface_destroy(frame_priv->xdg_surface);
libdecor_plugin_gtk_frame_free(0, frame); libdecor_plugin_gtk_frame_free(frame);
free(frame_priv->state.title); free(frame_priv->state.title);
free(frame_priv->state.app_id); free(frame_priv->state.app_id);
@ -1240,10 +1234,10 @@ libdecor_frame_set_visibility(struct libdecor_frame *frame,
/* enable/disable decorations that are managed by a plugin */ /* enable/disable decorations that are managed by a plugin */
if (frame_has_visible_client_side_decoration(frame)) { if (frame_has_visible_client_side_decoration(frame)) {
/* show client-side decorations */ /* show client-side decorations */
libdecor_plugin_gtk_frame_commit(0, frame, NULL, NULL); libdecor_plugin_gtk_frame_commit(frame, NULL, NULL);
} else { } else {
/* destroy client-side decorations */ /* destroy client-side decorations */
libdecor_plugin_gtk_frame_free(0, frame); libdecor_plugin_gtk_frame_free(frame);
} }
frame_set_window_geometry(frame, frame_set_window_geometry(frame,
@ -1290,7 +1284,7 @@ libdecor_frame_set_title(struct libdecor_frame *frame,
xdg_toplevel_set_title(frame_priv->xdg_toplevel, title); xdg_toplevel_set_title(frame_priv->xdg_toplevel, title);
libdecor_plugin_gtk_frame_property_changed(0, frame); libdecor_plugin_gtk_frame_property_changed(frame);
} }
} }
@ -1328,7 +1322,7 @@ notify_on_capability_change(struct libdecor_frame *frame,
frame->priv->content_height == 0) frame->priv->content_height == 0)
return; return;
libdecor_plugin_gtk_frame_property_changed(0, frame); libdecor_plugin_gtk_frame_property_changed(frame);
if (!libdecor_frame_has_capability(frame, LIBDECOR_ACTION_RESIZE)) { if (!libdecor_frame_has_capability(frame, LIBDECOR_ACTION_RESIZE)) {
frame->priv->interactive_limits = frame->priv->state.content_limits; frame->priv->interactive_limits = frame->priv->state.content_limits;
@ -1384,13 +1378,13 @@ libdecor_frame_has_capability(struct libdecor_frame *frame, enum libdecor_capabi
void void
libdecor_frame_popup_grab(struct libdecor_frame *frame, const char *seat_name){ libdecor_frame_popup_grab(struct libdecor_frame *frame, const char *seat_name){
struct libdecor_frame_private *frame_priv = frame->priv; struct libdecor_frame_private *frame_priv = frame->priv;
libdecor_plugin_gtk_frame_popup_grab(0, frame, seat_name); libdecor_plugin_gtk_frame_popup_grab(frame, seat_name);
} }
void void
libdecor_frame_popup_ungrab(struct libdecor_frame *frame, const char *seat_name){ libdecor_frame_popup_ungrab(struct libdecor_frame *frame, const char *seat_name){
struct libdecor_frame_private *frame_priv = frame->priv; struct libdecor_frame_private *frame_priv = frame->priv;
libdecor_plugin_gtk_frame_popup_ungrab(0, frame, seat_name); libdecor_plugin_gtk_frame_popup_ungrab(frame, seat_name);
} }
void void
@ -1435,8 +1429,7 @@ libdecor_frame_translate_coordinate(struct libdecor_frame *frame,
if (frame_has_visible_client_side_decoration(frame)){ if (frame_has_visible_client_side_decoration(frame)){
int left, top; int left, top;
libdecor_plugin_gtk_frame_get_border_size(0, frame, NULL, libdecor_plugin_gtk_frame_get_border_size(frame, NULL, &left, NULL, &top, NULL);
&left, NULL, &top, NULL);
*frame_x += left; *frame_x += left;
*frame_y += top; *frame_y += top;
} }
@ -1707,10 +1700,10 @@ libdecor_frame_commit(struct libdecor_frame *frame,
/* switch between decoration modes */ /* switch between decoration modes */
if (frame_has_visible_client_side_decoration(frame)) { if (frame_has_visible_client_side_decoration(frame)) {
libdecor_plugin_gtk_frame_commit(0, frame, state, libdecor_plugin_gtk_frame_commit(frame, state,
configuration); configuration);
} else { } else {
libdecor_plugin_gtk_frame_free(0, frame); libdecor_plugin_gtk_frame_free(frame);
} }
frame_set_window_geometry(frame, frame_set_window_geometry(frame,
@ -1816,7 +1809,7 @@ notify_error(enum libdecor_error error, const char *message)
{ {
ctx.has_error = true; ctx.has_error = true;
libdecorevent__error(error, message); libdecorevent__error(error, message);
libdecor_plugin_gtk_destroy(0); libdecor_plugin_gtk_destroy();
} }
static void static void
@ -1828,9 +1821,8 @@ finish_init(void){
} }
int int
libdecor_dispatch(int timeout) libdecor_dispatch(int timeout){
{ return libdecor_plugin_gtk_dispatch(timeout);
return libdecor_plugin_gtk_dispatch(0, timeout);
} }
void void
@ -1868,7 +1860,7 @@ libdecor_notify_plugin_error(enum libdecor_error error,
void void
cleanup(void){ cleanup(void){
libdecor_plugin_gtk_destroy(0); libdecor_plugin_gtk_destroy();
if (ctx.wl_subcompositor != 0){ if (ctx.wl_subcompositor != 0){
wl_subcompositor_destroy(ctx.wl_subcompositor); wl_subcompositor_destroy(ctx.wl_subcompositor);
} }
@ -1883,160 +1875,6 @@ cleanup(void){
} }
} }
//#include "libdecor-fallback.c"
static void
libdecor_plugin_fallback_destroy(struct libdecor_plugin *plugin)
{}
static int
libdecor_plugin_fallback_get_fd(struct libdecor_plugin *plugin)
{
struct libdecor_plugin_fallback *plugin_fallback =
(struct libdecor_plugin_fallback *) plugin;
return wl_display_get_fd(ctx.wl_display);
}
static int
libdecor_plugin_fallback_dispatch(struct libdecor_plugin *plugin,
int timeout)
{
struct libdecor_plugin_fallback *plugin_fallback =
(struct libdecor_plugin_fallback *) plugin;
struct wl_display *wl_display = ctx.wl_display;
struct pollfd fds[1];
int ret;
int dispatch_count = 0;
while (wl_display_prepare_read(wl_display) != 0)
dispatch_count += wl_display_dispatch_pending(wl_display);
if (wl_display_flush(wl_display) < 0 &&
errno != EAGAIN) {
wl_display_cancel_read(wl_display);
return -errno;
}
fds[0] = (struct pollfd) { wl_display_get_fd(wl_display), POLLIN };
ret = poll(fds, ARRAY_LENGTH(fds), timeout);
if (ret > 0) {
if (fds[0].revents & POLLIN) {
wl_display_read_events(wl_display);
dispatch_count += wl_display_dispatch_pending(wl_display);
return dispatch_count;
} else {
wl_display_cancel_read(wl_display);
return dispatch_count;
}
} else if (ret == 0) {
wl_display_cancel_read(wl_display);
return dispatch_count;
} else {
wl_display_cancel_read(wl_display);
return -errno;
}
}
static void
libdecor_plugin_fallback_set_handle_application_cursor(struct libdecor_plugin *plugin,
bool handle_cursor)
{
}
static struct libdecor_frame *
libdecor_plugin_fallback_frame_new(struct libdecor_plugin *plugin)
{
struct libdecor_frame *frame;
frame = calloc(1, sizeof *frame);
return frame;
}
static void
libdecor_plugin_fallback_frame_free(struct libdecor_plugin *plugin,
struct libdecor_frame *frame)
{
}
static void
libdecor_plugin_fallback_frame_commit(struct libdecor_plugin *plugin,
struct libdecor_frame *frame,
struct libdecor_state *state,
struct libdecor_configuration *configuration)
{
}
static void
libdecor_plugin_fallback_frame_property_changed(struct libdecor_plugin *plugin,
struct libdecor_frame *frame)
{
}
static void
libdecor_plugin_fallback_frame_popup_grab(struct libdecor_plugin *plugin,
struct libdecor_frame *frame,
const char *seat_name)
{
}
static void
libdecor_plugin_fallback_frame_popup_ungrab(struct libdecor_plugin *plugin,
struct libdecor_frame *frame,
const char *seat_name)
{
}
static bool
libdecor_plugin_fallback_frame_get_border_size(struct libdecor_plugin *plugin,
struct libdecor_frame *frame,
struct libdecor_configuration *configuration,
int *left,
int *right,
int *top,
int *bottom)
{
if (left)
*left = 0;
if (right)
*right = 0;
if (top)
*top = 0;
if (bottom)
*bottom = 0;
return true;
}
struct libdecor_plugin_interface fallback_plugin_iface = {
.destroy = libdecor_plugin_fallback_destroy,
.get_fd = libdecor_plugin_fallback_get_fd,
.dispatch = libdecor_plugin_fallback_dispatch,
.set_handle_application_cursor = libdecor_plugin_fallback_set_handle_application_cursor,
.frame_new = libdecor_plugin_fallback_frame_new,
.frame_free = libdecor_plugin_fallback_frame_free,
.frame_commit = libdecor_plugin_fallback_frame_commit,
.frame_property_changed = libdecor_plugin_fallback_frame_property_changed,
.frame_popup_grab = libdecor_plugin_fallback_frame_popup_grab,
.frame_popup_ungrab = libdecor_plugin_fallback_frame_popup_ungrab,
.frame_get_border_size = libdecor_plugin_fallback_frame_get_border_size,
};
struct libdecor_plugin *
libdecor_fallback_plugin_new(void){
struct libdecor_plugin_fallback *plugin;
plugin = calloc(1, sizeof *plugin);
plugin->context = 0;
libdecor_notify_plugin_ready();
return &plugin->plugin;
}
//#include "libdecor-cairo-blur.c" //#include "libdecor-cairo-blur.c"
int int
blur_surface(cairo_surface_t *surface, int margin) blur_surface(cairo_surface_t *surface, int margin)
@ -2561,7 +2399,7 @@ static bool
update_local_cursor(struct seat *seat); update_local_cursor(struct seat *seat);
static void static void
libdecor_plugin_gtk_destroy(struct libdecor_plugin *plugin) libdecor_plugin_gtk_destroy(void)
{ {
struct seat *seat, *seat_tmp; struct seat *seat, *seat_tmp;
struct output *output, *output_tmp; struct output *output, *output_tmp;
@ -2635,20 +2473,12 @@ libdecor_frame_gtk_new(void){
} }
static int static int
libdecor_plugin_gtk_get_fd(struct libdecor_plugin *plugin) libdecor_plugin_gtk_get_fd(void){
{ return wl_display_get_fd(ctx.wl_display);
struct libdecor_plugin_gtk *plugin_gtk =
(struct libdecor_plugin_gtk *) plugin;
struct wl_display *wl_display = ctx.wl_display;
return wl_display_get_fd(wl_display);
} }
static int static int
libdecor_plugin_gtk_dispatch(struct libdecor_plugin *plugin, int timeout) libdecor_plugin_gtk_dispatch(int timeout){
{
struct libdecor_plugin_gtk *plugin_gtk =
(struct libdecor_plugin_gtk *) plugin;
struct wl_display *wl_display = ctx.wl_display; struct wl_display *wl_display = ctx.wl_display;
struct pollfd fds[1]; struct pollfd fds[1];
int ret; int ret;
@ -2687,21 +2517,14 @@ libdecor_plugin_gtk_dispatch(struct libdecor_plugin *plugin, int timeout)
} }
static void static void
libdecor_plugin_gtk_set_handle_application_cursor(struct libdecor_plugin *plugin, libdecor_plugin_gtk_set_handle_application_cursor(bool handle_cursor){
bool handle_cursor)
{
ctx.handle_cursor = handle_cursor; ctx.handle_cursor = handle_cursor;
} }
static struct libdecor_frame * static struct libdecor_frame *
libdecor_plugin_gtk_frame_new(struct libdecor_plugin *plugin) libdecor_plugin_gtk_frame_new(void){
{
struct libdecor_plugin_gtk *plugin_gtk =
(struct libdecor_plugin_gtk *) plugin;
struct libdecor_frame_gtk *frame_gtk; struct libdecor_frame_gtk *frame_gtk;
frame_gtk = libdecor_frame_gtk_new(); frame_gtk = libdecor_frame_gtk_new();
return &frame_gtk->frame; return &frame_gtk->frame;
} }
@ -2734,10 +2557,8 @@ const struct wl_buffer_listener buffer_listener = {
buffer_release buffer_release
}; };
struct libdecor_plugin_gtk;
static struct buffer * static struct buffer *
create_shm_buffer(struct libdecor_plugin_gtk *plugin_gtk, create_shm_buffer(int width,
int width,
int height, int height,
bool opaque, bool opaque,
int scale) int scale)
@ -2826,9 +2647,7 @@ free_border_component(struct border_component *border_component)
} }
static void static void
libdecor_plugin_gtk_frame_free(struct libdecor_plugin *plugin, libdecor_plugin_gtk_frame_free(struct libdecor_frame *frame){
struct libdecor_frame *frame)
{
struct libdecor_frame_gtk *frame_gtk = struct libdecor_frame_gtk *frame_gtk =
(struct libdecor_frame_gtk *) frame; (struct libdecor_frame_gtk *) frame;
@ -2908,10 +2727,7 @@ redraw_scale(struct libdecor_frame_gtk *frame_gtk,
} }
static bool static bool
add_surface_output(struct libdecor_plugin_gtk *plugin_gtk, add_surface_output(struct wl_output *wl_output, struct wl_list *list){
struct wl_output *wl_output,
struct wl_list *list)
{
struct output *output; struct output *output;
struct surface_output *surface_output; struct surface_output *surface_output;
@ -2944,7 +2760,7 @@ surface_enter(void *data,
if (cmpnt == NULL) if (cmpnt == NULL)
return; return;
if (!add_surface_output(0, wl_output, &cmpnt->output_list)) if (!add_surface_output(wl_output, &cmpnt->output_list))
return; return;
if (redraw_scale(frame_gtk, cmpnt)) if (redraw_scale(frame_gtk, cmpnt))
@ -3492,8 +3308,7 @@ draw_border_component(struct libdecor_frame_gtk *frame_gtk,
} }
if (!buffer) if (!buffer)
buffer = create_shm_buffer(0, buffer = create_shm_buffer(component_width,
component_width,
component_height, component_height,
border_component->opaque, border_component->opaque,
border_component->scale); border_component->scale);
@ -3635,8 +3450,7 @@ window_state_to_decoration_type(enum libdecor_window_state window_state)
} }
static void static void
libdecor_plugin_gtk_frame_commit(struct libdecor_plugin *plugin, libdecor_plugin_gtk_frame_commit(struct libdecor_frame *frame,
struct libdecor_frame *frame,
struct libdecor_state *state, struct libdecor_state *state,
struct libdecor_configuration *configuration) struct libdecor_configuration *configuration)
{ {
@ -3685,8 +3499,7 @@ libdecor_plugin_gtk_frame_commit(struct libdecor_plugin *plugin,
} }
static void static void
libdecor_plugin_gtk_frame_property_changed(struct libdecor_plugin *plugin, libdecor_plugin_gtk_frame_property_changed(struct libdecor_frame *frame)
struct libdecor_frame *frame)
{ {
struct libdecor_frame_gtk *frame_gtk = struct libdecor_frame_gtk *frame_gtk =
(struct libdecor_frame_gtk *) frame; (struct libdecor_frame_gtk *) frame;
@ -3825,8 +3638,7 @@ synthesize_pointer_leave(struct seat *seat)
} }
static void static void
libdecor_plugin_gtk_frame_popup_grab(struct libdecor_plugin *plugin, libdecor_plugin_gtk_frame_popup_grab(struct libdecor_frame *frame,
struct libdecor_frame *frame,
const char *seat_name) const char *seat_name)
{ {
struct libdecor_frame_gtk *frame_gtk = struct libdecor_frame_gtk *frame_gtk =
@ -3850,8 +3662,7 @@ libdecor_plugin_gtk_frame_popup_grab(struct libdecor_plugin *plugin,
} }
static void static void
libdecor_plugin_gtk_frame_popup_ungrab(struct libdecor_plugin *plugin, libdecor_plugin_gtk_frame_popup_ungrab(struct libdecor_frame *frame,
struct libdecor_frame *frame,
const char *seat_name) const char *seat_name)
{ {
struct libdecor_frame_gtk *frame_gtk = struct libdecor_frame_gtk *frame_gtk =
@ -3876,8 +3687,7 @@ libdecor_plugin_gtk_frame_popup_ungrab(struct libdecor_plugin *plugin,
} }
static bool static bool
libdecor_plugin_gtk_frame_get_border_size(struct libdecor_plugin *plugin, libdecor_plugin_gtk_frame_get_border_size(struct libdecor_frame *frame,
struct libdecor_frame *frame,
struct libdecor_configuration *configuration, struct libdecor_configuration *configuration,
int *left, int *left,
int *right, int *right,
@ -3924,24 +3734,6 @@ libdecor_plugin_gtk_frame_get_border_size(struct libdecor_plugin *plugin,
return true; return true;
} }
struct libdecor_plugin_interface gtk_plugin_iface = {
.destroy = libdecor_plugin_gtk_destroy,
.get_fd = libdecor_plugin_gtk_get_fd,
.dispatch = libdecor_plugin_gtk_dispatch,
.set_handle_application_cursor = libdecor_plugin_gtk_set_handle_application_cursor,
.frame_new = libdecor_plugin_gtk_frame_new,
.frame_free = libdecor_plugin_gtk_frame_free,
.frame_commit = libdecor_plugin_gtk_frame_commit,
.frame_property_changed = libdecor_plugin_gtk_frame_property_changed,
.frame_popup_grab = libdecor_plugin_gtk_frame_popup_grab,
.frame_popup_ungrab = libdecor_plugin_gtk_frame_popup_ungrab,
.frame_get_border_size = libdecor_plugin_gtk_frame_get_border_size,
};
static void static void
cursor_surface_enter(void *data, cursor_surface_enter(void *data,
struct wl_surface *wl_surface, struct wl_surface *wl_surface,
@ -4794,10 +4586,6 @@ output_removed(struct output *output)
free(output); free(output);
} }
static struct libdecor_plugin_priority priorities[] = {
{ NULL, LIBDECOR_PLUGIN_PRIORITY_HIGH }
};
//#include "desktop-settings.c" //#include "desktop-settings.c"
static bool static bool

View File

@ -114,62 +114,11 @@ enum libdecor_wm_capabilities {
// libdecor-plugin.h // libdecor-plugin.h
struct libdecor_frame_private; struct libdecor_frame_private;
struct libdecor_frame { struct libdecor_frame {
struct libdecor_frame_private *priv; struct libdecor_frame_private *priv;
struct wl_list link; struct wl_list link;
}; };
struct libdecor_plugin_private;
struct libdecor_plugin {
struct libdecor_plugin_private *priv;
};
#define LIBDECOR_PLUGIN_PRIORITY_HIGH 1000
#define LIBDECOR_PLUGIN_PRIORITY_MEDIUM 100
#define LIBDECOR_PLUGIN_PRIORITY_LOW 0
struct libdecor_plugin_priority {
const char *desktop;
int priority;
};
struct libdecor_plugin_interface {
void (* destroy)(struct libdecor_plugin *plugin);
int (* get_fd)(struct libdecor_plugin *plugin);
int (* dispatch)(struct libdecor_plugin *plugin,
int timeout);
void (* set_handle_application_cursor)(struct libdecor_plugin *plugin,
bool handle_cursor);
struct libdecor_frame * (* frame_new)(struct libdecor_plugin *plugin);
void (* frame_free)(struct libdecor_plugin *plugin,
struct libdecor_frame *frame);
void (* frame_commit)(struct libdecor_plugin *plugin,
struct libdecor_frame *frame,
struct libdecor_state *state,
struct libdecor_configuration *configuration);
void (*frame_property_changed)(struct libdecor_plugin *plugin,
struct libdecor_frame *frame);
void (* frame_popup_grab)(struct libdecor_plugin *plugin,
struct libdecor_frame *frame,
const char *seat_name);
void (* frame_popup_ungrab)(struct libdecor_plugin *plugin,
struct libdecor_frame *frame,
const char *seat_name);
bool (* frame_get_border_size)(struct libdecor_plugin *plugin,
struct libdecor_frame *frame,
struct libdecor_configuration *configuration,
int *left,
int *right,
int *top,
int *bottom);
};
// #include "libdecor.c" // #include "libdecor.c"
struct libdecor_state { struct libdecor_state {
@ -237,17 +186,6 @@ struct libdecor_frame_private {
bool visible; bool visible;
}; };
struct libdecor_plugin_private {
struct libdecor_plugin_interface *iface;
};
// #include "libdecor-fallback.c"
struct libdecor_plugin_fallback {
struct libdecor_plugin plugin;
struct libdecor *context;
};
// #include "desktop-settings.h" // #include "desktop-settings.h"
enum libdecor_color_scheme { enum libdecor_color_scheme {
@ -543,12 +481,6 @@ int libdecor_state_get_content_height(struct libdecor_state *state);
enum libdecor_window_state libdecor_state_get_window_state(struct libdecor_state *state); enum libdecor_window_state libdecor_state_get_window_state(struct libdecor_state *state);
void libdecor_plugin_release(struct libdecor_plugin *plugin);
// #include "libdecor-fallback.h"
struct libdecor_plugin * libdecor_fallback_plugin_new(void);
// #include "libdecor-cairo-blur.h" // #include "libdecor-cairo-blur.h"
int blur_surface(cairo_surface_t *surface, int margin); int blur_surface(cairo_surface_t *surface, int margin);
@ -572,7 +504,6 @@ static void finish_init(void);
//#include "plugins/gtk/libdecor-gtk.c" //#include "plugins/gtk/libdecor-gtk.c"
static void libdecor_plugin_gtk_destroy(struct libdecor_plugin *plugin);
static void init_wl_output( uint32_t id, uint32_t version); static void init_wl_output( uint32_t id, uint32_t version);
@ -580,19 +511,18 @@ static void output_removed(struct output *output);
static const char *libdecor_gtk_proxy_tag = "libdecor-gtk"; static const char *libdecor_gtk_proxy_tag = "libdecor-gtk";
static void libdecor_plugin_gtk_destroy(struct libdecor_plugin *plugin); static void libdecor_plugin_gtk_destroy(void);
static int libdecor_plugin_gtk_get_fd(struct libdecor_plugin *plugin); static int libdecor_plugin_gtk_get_fd(void);
static int libdecor_plugin_gtk_get_fd(struct libdecor_plugin *plugin); static int libdecor_plugin_gtk_get_fd(void);
static int libdecor_plugin_gtk_dispatch(struct libdecor_plugin *plugin, int timeout); static int libdecor_plugin_gtk_dispatch(int timeout);
static void libdecor_plugin_gtk_set_handle_application_cursor(struct libdecor_plugin *plugin, bool handle_cursor); static void libdecor_plugin_gtk_set_handle_application_cursor(bool handle_cursor);
static struct libdecor_frame * libdecor_plugin_gtk_frame_new(struct libdecor_plugin *plugin); static struct libdecor_frame * libdecor_plugin_gtk_frame_new(void);
static void libdecor_plugin_gtk_frame_free(struct libdecor_plugin *plugin, struct libdecor_frame *frame); static void libdecor_plugin_gtk_frame_free(struct libdecor_frame *frame);
static void libdecor_plugin_gtk_frame_commit(struct libdecor_plugin *plugin, struct libdecor_frame *frame, struct libdecor_state *state, struct libdecor_configuration *configuration); static void libdecor_plugin_gtk_frame_commit(struct libdecor_frame *frame, struct libdecor_state *state, struct libdecor_configuration *configuration);
static void libdecor_plugin_gtk_frame_property_changed(struct libdecor_plugin *plugin, struct libdecor_frame *frame); static void libdecor_plugin_gtk_frame_property_changed(struct libdecor_frame *frame);
static void libdecor_plugin_gtk_frame_popup_grab(struct libdecor_plugin *plugin, struct libdecor_frame *frame, const char *seat_name); static void libdecor_plugin_gtk_frame_popup_grab(struct libdecor_frame *frame, const char *seat_name);
static void libdecor_plugin_gtk_frame_popup_ungrab(struct libdecor_plugin *plugin, struct libdecor_frame *frame, const char *seat_name); static void libdecor_plugin_gtk_frame_popup_ungrab(struct libdecor_frame *frame, const char *seat_name);
static bool libdecor_plugin_gtk_frame_get_border_size(struct libdecor_plugin *plugin, struct libdecor_frame *frame, struct libdecor_configuration *configuration, static bool libdecor_plugin_gtk_frame_get_border_size(struct libdecor_frame *frame, struct libdecor_configuration *configuration, int *left, int *right, int *top, int *bottom);
int *left, int *right, int *top, int *bottom);
// digesting_libdecor // digesting_libdecor