Skip to content

Commit 874b7b4

Browse files
committed
#164 render a brief change message to set as $WD_MESSAGE for the command
1 parent 791b892 commit 874b7b4

File tree

7 files changed

+69
-27
lines changed

7 files changed

+69
-27
lines changed

inc/displ.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@ struct Displ {
3535
char *zxdg_output_manager_interface;
3636

3737
enum ConfigState config_state;
38-
39-
char *delta_message;
4038
};
4139

4240
void displ_init(void);

inc/global.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,6 @@ extern struct SList *cfg_file_paths;
1010
extern struct Head *head_changing_mode;
1111
extern struct Head *head_changing_adaptive_sync;
1212

13+
extern char *deltas_brief;
14+
1315
#endif // GLOBAL_H

src/global.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,5 @@ struct SList *cfg_file_paths = NULL;
99
struct Head *head_changing_mode = NULL;
1010
struct Head *head_changing_adaptive_sync = NULL;
1111

12+
char *deltas_brief = NULL;
13+

src/info.c

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -462,21 +462,37 @@ char *render_deltas_brief(const enum ConfigState config_state, const struct SLis
462462
continue;
463463
}
464464

465-
// mode changes happen in their own operation
465+
// mode changes happen in their own operation, with an enable
466466
if (head_current_mode_not_desired(head)) {
467-
bufp += snprintf(bufp, len - (bufp - buf), "%s%s:\n mode: %dx%d@%dHz -> %dx%d@%dHz\n", // line up with vrr
467+
bufp += snprintf(bufp, len - (bufp - buf), "%s%s:\n mode: ", // line up with vrr
468468
head->name,
469-
(!head->current.enabled && head->desired.enabled) ? ": enabled" : "",
470-
head->current.mode->width,
471-
head->current.mode->height,
472-
mhz_to_hz_rounded(head->current.mode->refresh_mhz),
473-
head->desired.mode->width,
474-
head->desired.mode->height,
475-
mhz_to_hz_rounded(head->desired.mode->refresh_mhz)
469+
(!head->current.enabled && head->desired.enabled) ? ": enabled" : ""
476470
);
471+
472+
if (head->current.mode) {
473+
bufp += snprintf(bufp, len - (bufp - buf), "%dx%d@%dHz -> ",
474+
head->current.mode->width,
475+
head->current.mode->height,
476+
mhz_to_hz_rounded(head->current.mode->refresh_mhz)
477+
);
478+
} else {
479+
bufp += snprintf(bufp, len - (bufp - buf), "(no mode) -> ");
480+
}
481+
482+
if (head->desired.mode) {
483+
bufp += snprintf(bufp, len - (bufp - buf), "%dx%d@%dHz\n",
484+
head->desired.mode->width,
485+
head->desired.mode->height,
486+
mhz_to_hz_rounded(head->desired.mode->refresh_mhz)
487+
);
488+
} else {
489+
bufp += snprintf(bufp, len - (bufp - buf), "(no mode)\n");
490+
}
491+
477492
continue;
478493
}
479494

495+
// enable with no change in mode
480496
if (!head->current.enabled && head->desired.enabled) {
481497
bufp += snprintf(bufp, len - (bufp - buf), "%s: enabled\n", head->name);
482498
continue;

src/layout.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -327,8 +327,8 @@ void apply(void) {
327327

328328
zwlr_output_configuration_v1_apply(zwlr_config);
329329

330-
free(displ->delta_message);
331-
displ->delta_message = render_deltas_brief(displ->config_state, heads_changing);
330+
free(deltas_brief);
331+
deltas_brief = render_deltas_brief(displ->config_state, heads_changing);
332332

333333
displ->config_state = OUTSTANDING;
334334

@@ -368,7 +368,7 @@ void handle_success(void) {
368368
log_info("\nExecuting CHANGE_SUCCESS_CMD:");
369369
log_info(" %s", cfg->change_success_cmd);
370370

371-
spawn_sh_cmd(cfg->change_success_cmd, displ->delta_message);
371+
spawn_sh_cmd(cfg->change_success_cmd, deltas_brief);
372372
}
373373

374374
log_info("\nChanges successful");
@@ -438,8 +438,8 @@ void layout(void) {
438438
break;
439439
}
440440

441-
free(displ->delta_message);
442-
displ->delta_message = NULL;
441+
free(deltas_brief);
442+
deltas_brief = NULL;
443443

444444
desire();
445445
apply();

tst/tst-info.c

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -259,19 +259,45 @@ void print_head_deltas__enable(void **state) {
259259
free(expected_log);
260260
}
261261

262-
void render_deltas_brief__mode_vrr(void **state) {
262+
void render_deltas_brief__mode(void **state) {
263263
struct State *s = *state;
264264

265-
s->head2->desired.adaptive_sync = ZWLR_OUTPUT_HEAD_V1_ADAPTIVE_SYNC_STATE_ENABLED;
265+
s->head1->desired.mode = NULL;
266+
267+
s->head2->current.mode = NULL;
268+
269+
char *deltas = render_deltas_brief(SUCCEEDED, s->heads);
270+
271+
assert_string_equal(deltas, ""
272+
"name1:\n"
273+
" mode: 100x200@30Hz -> (no mode)\n"
274+
"name2:\n"
275+
" mode: (no mode) -> 1400x1500@160Hz"
276+
);
277+
278+
slist_free(&heads);
279+
280+
free(deltas);
281+
}
282+
283+
void render_deltas_brief__vrr(void **state) {
284+
struct State *s = *state;
285+
286+
s->head1->desired.mode = s->head1->current.mode;
287+
s->head1->current.adaptive_sync = ZWLR_OUTPUT_HEAD_V1_ADAPTIVE_SYNC_STATE_DISABLED;
288+
s->head1->desired.adaptive_sync = ZWLR_OUTPUT_HEAD_V1_ADAPTIVE_SYNC_STATE_ENABLED;
289+
266290
s->head2->desired.mode = s->head2->current.mode;
291+
s->head2->current.adaptive_sync = ZWLR_OUTPUT_HEAD_V1_ADAPTIVE_SYNC_STATE_ENABLED;
292+
s->head2->desired.adaptive_sync = ZWLR_OUTPUT_HEAD_V1_ADAPTIVE_SYNC_STATE_DISABLED;
267293

268294
char *deltas = render_deltas_brief(SUCCEEDED, s->heads);
269295

270296
assert_string_equal(deltas, ""
271297
"name1:\n"
272-
" mode: 100x200@30Hz -> 400x500@60Hz\n"
298+
" VRR: on\n"
273299
"name2:\n"
274-
" VRR: on"
300+
" VRR: off"
275301
);
276302

277303
slist_free(&heads);
@@ -363,7 +389,8 @@ int main(void) {
363389
TEST(print_head_deltas__disable),
364390
TEST(print_head_deltas__enable),
365391

366-
TEST(render_deltas_brief__mode_vrr),
392+
TEST(render_deltas_brief__mode),
393+
TEST(render_deltas_brief__vrr),
367394
TEST(render_deltas_brief__other),
368395
TEST(render_deltas_brief__enabled),
369396
};

tst/tst-layout.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ int after_all(void **state) {
5959

6060
int before_each(void **state) {
6161
cfg = cfg_default();
62-
displ = calloc(1, sizeof(struct Displ));
6362

6463
struct State *s = calloc(1, sizeof(struct State));
6564

@@ -83,8 +82,6 @@ int after_each(void **state) {
8382
head_changing_mode = NULL;
8483
head_changing_adaptive_sync = NULL;
8584

86-
free(displ);
87-
8885
cfg_destroy();
8986

9087
struct State *s = *state;
@@ -645,14 +642,14 @@ void handle_success__head_changing_mode(void **state) {
645642

646643
void handle_success__change_success_cmd(void **state) {
647644
cfg->change_success_cmd = strdup("echo \"hi from way-displays\"");
648-
displ->delta_message = strdup("DP-1: enabled\n mode: xx->yy");
645+
deltas_brief = strdup("DP-1: enabled\n mode: xx->yy");
649646

650647
expect_string(__wrap_spawn_sh_cmd, command, cfg->change_success_cmd);
651-
expect_string(__wrap_spawn_sh_cmd, message, displ->delta_message);
648+
expect_string(__wrap_spawn_sh_cmd, message, deltas_brief);
652649

653650
handle_success();
654651

655-
free(displ->delta_message);
652+
free(deltas_brief);
656653

657654
assert_log(INFO, "\nExecuting CHANGE_SUCCESS_CMD:\n"
658655
" echo \"hi from way-displays\"\n"

0 commit comments

Comments
 (0)