summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitea/issue_template/bug_report.yml62
-rw-r--r--.gitea/issue_template/enhancement-idea.yml9
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.md17
-rw-r--r--.github/ISSUE_TEMPLATE/enhancement-idea.md10
-rw-r--r--dwl.c51
5 files changed, 100 insertions, 49 deletions
diff --git a/.gitea/issue_template/bug_report.yml b/.gitea/issue_template/bug_report.yml
new file mode 100644
index 0000000..56f4a3e
--- /dev/null
+++ b/.gitea/issue_template/bug_report.yml
@@ -0,0 +1,62 @@
+name: Bug Report
+about: Something in dwl isn't working correctly
+title:
+labels:
+ - 'Kind/Bug'
+body:
+ - type: markdown
+ attributes:
+ value: |
+ - Only report bugs that can be reproduced on the main (or wlroots-next) branch without patches.
+ - Proprietary graphics drivers, including nvidia, are not supported. Please use the open source equivalents, such as nouveau, if you would like to use dwl.
+ - Report patch issues to their respective authors.
+
+ - type: input
+ id: dwl_version
+ attributes:
+ label: 'dwl version:'
+ placeholder: '`dwl -v`'
+ validations:
+ required: true
+
+ - type: input
+ id: wlroots_version
+ attributes:
+ label: 'wlroots version:'
+ validations:
+ required: true
+
+ - type: input
+ id: distro
+ attributes:
+ label: What distro (and version) are you using?
+ validations:
+ required: false
+
+ - type: textarea
+ id: debug_log
+ attributes:
+ label: Debug Log
+ value: |
+ Run `dwl -d 2> ~/dwl.log` from a TTY and attach the **full** (do not truncate it) file here, or upload it to a pastebin.
+ Please try to keep the reproduction as brief as possible and exit dwl.
+ validations:
+ required: false
+
+ - type: textarea
+ id: backtrace
+ attributes:
+ label: Stack Trace
+ value: |
+ - Only required if dwl crashes.
+ - If the lines mentioning dwl or wlroots have `??`. Please compile both dwl and wlroots from source (enabling debug symbols) and try to reproduce.
+ validations:
+ required: false
+
+ - type: textarea
+ attributes:
+ label: Description
+ value: |
+ The steps you took to reproduce the problem.
+ validations:
+ required: false
diff --git a/.gitea/issue_template/enhancement-idea.yml b/.gitea/issue_template/enhancement-idea.yml
new file mode 100644
index 0000000..be1bbf2
--- /dev/null
+++ b/.gitea/issue_template/enhancement-idea.yml
@@ -0,0 +1,9 @@
+name: Enhancement idea
+about: Suggest a feature or improvement
+title:
+labels:
+ - 'Kind/Feature'
+body:
+ - type: textarea
+ attributes:
+ label: Description
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index cd9bd8d..0000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-name: Bug report
-about: Something in dwl isn't working correctly
-title: ''
-labels: 'A: bug'
-assignees: ''
-
----
-
-## Info
-dwl version:
-wlroots version:
-## Description
-<!--
-Only report bugs that can be reproduced on the main line
-Report patch issues to their respective authors
--->
diff --git a/.github/ISSUE_TEMPLATE/enhancement-idea.md b/.github/ISSUE_TEMPLATE/enhancement-idea.md
deleted file mode 100644
index 0ac096d..0000000
--- a/.github/ISSUE_TEMPLATE/enhancement-idea.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-name: Enhancement idea
-about: Suggest a feature or improvement
-title: ''
-labels: 'A: enhancement'
-assignees: ''
-
----
-
-
diff --git a/dwl.c b/dwl.c
index aa3f1b9..1143701 100644
--- a/dwl.c
+++ b/dwl.c
@@ -861,22 +861,28 @@ createmon(struct wl_listener *listener, void *data)
struct wlr_output *wlr_output = data;
const MonitorRule *r;
size_t i;
- Monitor *m = wlr_output->data = ecalloc(1, sizeof(*m));
- m->wlr_output = wlr_output;
+ struct wlr_output_state state;
+ Monitor *m;
- wlr_output_init_render(wlr_output, alloc, drw);
+ if (!wlr_output_init_render(wlr_output, alloc, drw))
+ return;
+
+ m = wlr_output->data = ecalloc(1, sizeof(*m));
+ m->wlr_output = wlr_output;
- /* Initialize monitor state using configured rules */
for (i = 0; i < LENGTH(m->layers); i++)
wl_list_init(&m->layers[i]);
+
+ wlr_output_state_init(&state);
+ /* Initialize monitor state using configured rules */
m->tagset[0] = m->tagset[1] = 1;
for (r = monrules; r < END(monrules); r++) {
if (!r->name || strstr(wlr_output->name, r->name)) {
m->mfact = r->mfact;
m->nmaster = r->nmaster;
- wlr_output_set_scale(wlr_output, r->scale);
+ wlr_output_state_set_scale(&state, r->scale);
m->lt[0] = m->lt[1] = r->lt;
- wlr_output_set_transform(wlr_output, r->rr);
+ wlr_output_state_set_transform(&state, r->rr);
m->m.x = r->x;
m->m.y = r->y;
break;
@@ -887,16 +893,16 @@ createmon(struct wl_listener *listener, void *data)
* monitor supports only a specific set of modes. We just pick the
* monitor's preferred mode; a more sophisticated compositor would let
* the user configure it. */
- wlr_output_set_mode(wlr_output, wlr_output_preferred_mode(wlr_output));
+ wlr_output_state_set_mode(&state, wlr_output_preferred_mode(wlr_output));
/* Set up event listeners */
LISTEN(&wlr_output->events.frame, &m->frame, rendermon);
LISTEN(&wlr_output->events.destroy, &m->destroy, cleanupmon);
LISTEN(&wlr_output->events.request_state, &m->request_state, requestmonstate);
- wlr_output_enable(wlr_output, 1);
- if (!wlr_output_commit(wlr_output))
- return;
+ wlr_output_state_set_enabled(&state, 1);
+ wlr_output_commit_state(wlr_output, &state);
+ wlr_output_state_finish(&state);
wl_list_insert(&mons, &m->link);
printstatus();
@@ -1723,14 +1729,17 @@ outputmgrapplyortest(struct wlr_output_configuration_v1 *config, int test)
wl_list_for_each(config_head, &config->heads, link) {
struct wlr_output *wlr_output = config_head->state.output;
Monitor *m = wlr_output->data;
+ struct wlr_output_state state;
- wlr_output_enable(wlr_output, config_head->state.enabled);
+ wlr_output_state_init(&state);
+ wlr_output_state_set_enabled(&state, config_head->state.enabled);
if (!config_head->state.enabled)
goto apply_or_test;
+
if (config_head->state.mode)
- wlr_output_set_mode(wlr_output, config_head->state.mode);
+ wlr_output_state_set_mode(&state, config_head->state.mode);
else
- wlr_output_set_custom_mode(wlr_output,
+ wlr_output_state_set_custom_mode(&state,
config_head->state.custom_mode.width,
config_head->state.custom_mode.height,
config_head->state.custom_mode.refresh);
@@ -1740,18 +1749,16 @@ outputmgrapplyortest(struct wlr_output_configuration_v1 *config, int test)
if (m->m.x != config_head->state.x || m->m.y != config_head->state.y)
wlr_output_layout_add(output_layout, wlr_output,
config_head->state.x, config_head->state.y);
- wlr_output_set_transform(wlr_output, config_head->state.transform);
- wlr_output_set_scale(wlr_output, config_head->state.scale);
- wlr_output_enable_adaptive_sync(wlr_output,
+ wlr_output_state_set_transform(&state, config_head->state.transform);
+ wlr_output_state_set_scale(&state, config_head->state.scale);
+ wlr_output_state_set_adaptive_sync_enabled(&state,
config_head->state.adaptive_sync_enabled);
apply_or_test:
- if (test) {
- ok &= wlr_output_test(wlr_output);
- wlr_output_rollback(wlr_output);
- } else {
- ok &= wlr_output_commit(wlr_output);
- }
+ ok &= test ? wlr_output_test_state(wlr_output, &state)
+ : wlr_output_commit_state(wlr_output, &state);
+
+ wlr_output_state_finish(&state);
}
if (ok)