Use wl_output.name instead of xdg_output.name

This commit is contained in:
Leon Henrik Plickat
2022-01-30 01:45:25 +01:00
parent 06ae5c5f6e
commit 2282371654
3 changed files with 11 additions and 253 deletions

40
wlopm.c
View File

@ -34,7 +34,6 @@
#endif
#endif
#include "xdg-output-unstable-v1.h"
#include "wlr-output-power-management-unstable-v1.h"
#define VERSION "0.0.1"
@ -52,7 +51,6 @@ struct Output
{
struct wl_list link;
struct wl_output *wl_output;
struct zxdg_output_v1 *xdg_output;
struct zwlr_output_power_v1 *wlr_output_power;
enum zwlr_output_power_v1_mode mode;
char *name;
@ -90,7 +88,6 @@ struct wl_callback *sync_callback = NULL;
struct wl_list outputs;
struct wl_list operations;
struct zxdg_output_manager_v1 *xdg_output_manager = NULL;
struct zwlr_output_power_manager_v1 *wlr_output_power_manager = NULL;
int ret = EXIT_SUCCESS;
@ -116,7 +113,7 @@ static const struct zwlr_output_power_v1_listener wlr_output_power_listener = {
.failed = wlr_output_power_handle_failed,
};
static void xdg_output_handle_name (void *data, struct zxdg_output_v1 *xdg_output,
static void wl_output_handle_name (void *data, struct wl_output *wl_output,
const char *name)
{
struct Output *output = (struct Output *)data;
@ -125,12 +122,13 @@ static void xdg_output_handle_name (void *data, struct zxdg_output_v1 *xdg_outpu
output->name = strdup(name);
}
static const struct zxdg_output_v1_listener xdg_output_listener = {
.logical_size = noop,
.name = xdg_output_handle_name,
.logical_position = noop,
.description = noop,
.done = noop, /* Deprecated since version 3. */
static const struct wl_output_listener wl_output_listener = {
.name = wl_output_handle_name,
.geometry = noop,
.mode = noop,
.scale = noop,
.description = noop,
.done = noop,
};
static void registry_handle_global (void *data, struct wl_registry *registry,
@ -147,16 +145,13 @@ static void registry_handle_global (void *data, struct wl_registry *registry,
output->wl_output = wl_registry_bind(registry, name,
&wl_output_interface, version);
output->xdg_output = NULL;
wl_output_add_listener(output->wl_output, &wl_output_listener, output);
output->wlr_output_power = NULL;
output->name = NULL;
output->global_name = name;
wl_list_insert(&outputs, &output->link);
}
else if ( strcmp(interface, zxdg_output_manager_v1_interface.name) == 0 )
xdg_output_manager = wl_registry_bind(registry, name,
&zxdg_output_manager_v1_interface, version);
else if ( strcmp(interface, zwlr_output_power_manager_v1_interface.name) == 0 )
wlr_output_power_manager = wl_registry_bind(registry, name,
&zwlr_output_power_manager_v1_interface, version);
@ -260,22 +255,9 @@ static void sync_handle_done (void *data, struct wl_callback *wl_callback, uint3
return;
}
if ( xdg_output_manager == NULL )
{
fputs("ERROR: Wayland server does not support xdg-output.\n", stderr);
loop = false;
ret = EXIT_FAILURE;
return;
}
struct Output *output;
wl_list_for_each(output, &outputs, link)
{
output->xdg_output = zxdg_output_manager_v1_get_xdg_output(
xdg_output_manager, output->wl_output);
zxdg_output_v1_add_listener(output->xdg_output,
&xdg_output_listener, output);
output->wlr_output_power = zwlr_output_power_manager_v1_get_output_power(
wlr_output_power_manager, output->wl_output);
zwlr_output_power_v1_add_listener(output->wlr_output_power,
@ -370,8 +352,6 @@ static void destroy_all_outputs (void)
{
if ( output->wlr_output_power != NULL )
zwlr_output_power_v1_destroy(output->wlr_output_power);
if ( output->xdg_output != NULL )
zxdg_output_v1_destroy(output->xdg_output);
wl_output_destroy(output->wl_output);
wl_list_remove(&output->link);
free(output->name);
@ -568,8 +548,6 @@ int main(int argc, char *argv[])
wl_callback_destroy(sync_callback);
if ( wlr_output_power_manager != NULL )
zwlr_output_power_manager_v1_destroy(wlr_output_power_manager);
if ( xdg_output_manager != NULL )
zxdg_output_manager_v1_destroy(xdg_output_manager);
if ( wl_registry != NULL )
wl_registry_destroy(wl_registry);
wl_display_disconnect(wl_display);