Use output_match_name_or_id() in apply_output_config_to_outputs()

This commit is contained in:
Simon Ser 2023-02-28 12:51:59 +01:00
parent d18f27dbc3
commit 64858795a8
3 changed files with 11 additions and 5 deletions

View file

@ -96,6 +96,9 @@ void output_damage_box(struct sway_output *output, struct wlr_box *box);
void output_damage_whole_container(struct sway_output *output, void output_damage_whole_container(struct sway_output *output,
struct sway_container *con); struct sway_container *con);
bool output_match_name_or_id(struct sway_output *output,
const char *name_or_id);
// this ONLY includes the enabled outputs // this ONLY includes the enabled outputs
struct sway_output *output_by_name_or_id(const char *name_or_id); struct sway_output *output_by_name_or_id(const char *name_or_id);

View file

@ -722,12 +722,11 @@ void apply_output_config_to_outputs(struct output_config *oc) {
// this is during startup then there will be no container and config // this is during startup then there will be no container and config
// will be applied during normal "new output" event from wlroots. // will be applied during normal "new output" event from wlroots.
bool wildcard = strcmp(oc->name, "*") == 0; bool wildcard = strcmp(oc->name, "*") == 0;
char id[128];
struct sway_output *sway_output, *tmp; struct sway_output *sway_output, *tmp;
wl_list_for_each_safe(sway_output, tmp, &root->all_outputs, link) { wl_list_for_each_safe(sway_output, tmp, &root->all_outputs, link) {
char *name = sway_output->wlr_output->name; if (output_match_name_or_id(sway_output, oc->name)) {
output_get_identifier(id, sizeof(id), sway_output); char id[128];
if (wildcard || !strcmp(name, oc->name) || !strcmp(id, oc->name)) { output_get_identifier(id, sizeof(id), sway_output);
struct output_config *current = get_output_config(id, sway_output); struct output_config *current = get_output_config(id, sway_output);
if (!current) { if (!current) {
// No stored output config matched, apply oc directly // No stored output config matched, apply oc directly

View file

@ -36,8 +36,12 @@
#include <wlr/types/wlr_drm_lease_v1.h> #include <wlr/types/wlr_drm_lease_v1.h>
#endif #endif
static bool output_match_name_or_id(struct sway_output *output, bool output_match_name_or_id(struct sway_output *output,
const char *name_or_id) { const char *name_or_id) {
if (strcmp(name_or_id, "*") == 0) {
return true;
}
char identifier[128]; char identifier[128];
output_get_identifier(identifier, sizeof(identifier), output); output_get_identifier(identifier, sizeof(identifier), output);
return strcasecmp(identifier, name_or_id) == 0 return strcasecmp(identifier, name_or_id) == 0