~ruther/dwl

48396a1bf8ce4282c4fc76d853195e1026caf7d7 — Leonardo Hernández Hernández 2 years ago b6e3fc1
fix crash when setting a custom mode
1 files changed, 17 insertions(+), 1 deletions(-)

M dwl.c
M dwl.c => dwl.c +17 -1
@@ 1621,7 1621,23 @@ outputmgrapplyortest(struct wlr_output_configuration_v1 *config, int test)
			ok &= wlr_output_test(wlr_output);
			wlr_output_rollback(wlr_output);
		} else {
			ok &= wlr_output_commit(wlr_output);
			int output_ok = 1;
			/* If it's a custom mode to avoid an assertion failed in wlr_output_commit()
			 * we test if that mode does not fail rather than just call wlr_output_commit().
			 * We do not test normal modes because (at least in my hardware (@sevz17))
			 * wlr_output_test() fails even if that mode can actually be set */
			if (!config_head->state.mode)
				ok &= (output_ok = wlr_output_test(wlr_output)
						&& wlr_output_commit(wlr_output));
			else
				ok &= wlr_output_commit(wlr_output);

			/* In custom modes we call wlr_output_test(), it it fails
			 * we need to rollback, and normal modes seems to does not cause
			 * assertions failed in wlr_output_commit() which rollback
			 * the output on failure */
			if (!output_ok)
				wlr_output_rollback(wlr_output);
		}
	}


Do not follow this link