Merge branch 'wl-output-name-description'

This commit is contained in:
Daniel Eklöf 2021-12-14 15:10:03 +01:00
commit 3e5a9aa904
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

View file

@ -385,13 +385,19 @@ output_update_ppi(struct monitor *mon)
break;
}
mon->ppi.scaled.x = mon->dim.px_scaled.width / x_inches;
mon->ppi.scaled.y = mon->dim.px_scaled.height / y_inches;
int scaled_width = mon->dim.px_scaled.width;
int scaled_height = mon->dim.px_scaled.height;
float px_diag = sqrt(
pow(mon->dim.px_scaled.width, 2) +
pow(mon->dim.px_scaled.height, 2));
if (scaled_width == 0 && scaled_height == 0 && mon->scale > 0) {
/* Estimate scaled width/height if none has been provided */
scaled_width = mon->dim.px_real.width / mon->scale;
scaled_height = mon->dim.px_real.height / mon->scale;
}
mon->ppi.scaled.x = scaled_width / x_inches;
mon->ppi.scaled.y = scaled_height / y_inches;
float px_diag = sqrt(pow(scaled_width, 2) + pow(scaled_height, 2));
mon->dpi = px_diag / mon->inch * mon->scale;
}
@ -446,11 +452,38 @@ output_scale(void *data, struct wl_output *wl_output, int32_t factor)
output_update_ppi(mon);
}
#if defined(WL_OUTPUT_NAME_SINCE_VERSION)
static void
output_name(void *data, struct wl_output *wl_output, const char *name)
{
struct monitor *mon = data;
free(mon->name);
mon->name = name != NULL ? xstrdup(name) : NULL;
}
#endif
#if defined(WL_OUTPUT_DESCRIPTION_SINCE_VERSION)
static void
output_description(void *data, struct wl_output *wl_output,
const char *description)
{
struct monitor *mon = data;
free(mon->description);
mon->description = description != NULL ? xstrdup(description) : NULL;
}
#endif
static const struct wl_output_listener output_listener = {
.geometry = &output_geometry,
.mode = &output_mode,
.done = &output_done,
.scale = &output_scale,
#if defined(WL_OUTPUT_NAME_SINCE_VERSION)
.name = &output_name,
#endif
#if defined(WL_OUTPUT_DESCRIPTION_SINCE_VERSION)
.description = &output_description,
#endif
};
static void
@ -964,7 +997,7 @@ handle_global(void *data, struct wl_registry *registry,
return;
struct wl_output *output = wl_registry_bind(
wayl->registry, name, &wl_output_interface, min(version, 3));
wayl->registry, name, &wl_output_interface, min(version, 4));
tll_push_back(
wayl->monitors,