Skip to content

Accurately consider inactive displays when signaling child#3761

Closed
dfoxfranke wants to merge 1 commit intoi3:nextfrom
dfoxfranke:bug3242
Closed

Accurately consider inactive displays when signaling child#3761
dfoxfranke wants to merge 1 commit intoi3:nextfrom
dfoxfranke:bug3242

Conversation

@dfoxfranke
Copy link
Copy Markdown

This should fix #3242. Marked as draft because I haven't tested this yet.

Copy link
Copy Markdown
Member

@stapelberg stapelberg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your PR! As I was looking at it anyway to reply on the issue, I figured I might as well leave a few review comments, even though it’s still in draft state.

bool changed = params->outputs_walk->active != (bool)val;
if (changed) {
params->outputs_walk->active = val;
stop_or_cont_child();
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you move this stop_or_cont_child call into i3bar/src/ipc.c:got_output_reply next to the reconfig_windows calls please? I think it’d be cleaner to modify state after parsing, not while parsing :)


if (!strcmp(params->cur_key, "active")) {
params->outputs_walk->active = val;
bool changed = params->outputs_walk->active != (bool)val;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: here and below, please:

  1. Mark these bools as const.
  2. Add parens around the expression.

*/
void cont_child(void);

/*
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: use /** so that doxygen will pick up the comment.

@Airblader
Copy link
Copy Markdown
Member

@dfoxfranke Are you planning on following up on this? :-)

orestisfl added a commit to orestisfl/i3 that referenced this pull request Apr 8, 2020
Following the reproduction instructions from
i3#3242 (comment)

For me, i3#3242 happened when the following sequence executed:
1. Fullscreening window correctly calls `stop_child()` in
https://github.com/i3/i3/blob/6e24e2ad6f4b1e32cfa27805a3a948d0de50f3b1/i3bar/src/xcb.c#L685
2. Xrandr change, `reconfig_windows()` is called and `output->visible` is
set to `true` in this line:
https://github.com/i3/i3/blob/6e24e2ad6f4b1e32cfa27805a3a948d0de50f3b1/i3bar/src/xcb.c#L1791
3. When the window's fullscreen is disabled,
`handle_visibility_notify()` returns in this line:
https://github.com/i3/i3/blob/6e24e2ad6f4b1e32cfa27805a3a948d0de50f3b1/i3bar/src/xcb.c#L677
because previously `output->visible` was set to `true`

To fix this, I call `cont_child()` more leniently since it is a no-op
when the child is not stopped.

Fixes i3#3242
Closes i3#3761
stapelberg pushed a commit that referenced this pull request Apr 9, 2020
Following the reproduction instructions from
#3242 (comment)

For me, #3242 happened when the following sequence executed:
1. Fullscreening window correctly calls `stop_child()` in
https://github.com/i3/i3/blob/6e24e2ad6f4b1e32cfa27805a3a948d0de50f3b1/i3bar/src/xcb.c#L685
2. Xrandr change, `reconfig_windows()` is called and `output->visible` is
set to `true` in this line:
https://github.com/i3/i3/blob/6e24e2ad6f4b1e32cfa27805a3a948d0de50f3b1/i3bar/src/xcb.c#L1791
3. When the window's fullscreen is disabled,
`handle_visibility_notify()` returns in this line:
https://github.com/i3/i3/blob/6e24e2ad6f4b1e32cfa27805a3a948d0de50f3b1/i3bar/src/xcb.c#L677
because previously `output->visible` was set to `true`

To fix this, I call `cont_child()` more leniently since it is a no-op
when the child is not stopped.

Fixes #3242
Closes #3761
stapelberg pushed a commit that referenced this pull request Apr 22, 2020
Following the reproduction instructions from
#3242 (comment)

For me, #3242 happened when the following sequence executed:
1. Fullscreening window correctly calls `stop_child()` in
https://github.com/i3/i3/blob/6e24e2ad6f4b1e32cfa27805a3a948d0de50f3b1/i3bar/src/xcb.c#L685
2. Xrandr change, `reconfig_windows()` is called and `output->visible` is
set to `true` in this line:
https://github.com/i3/i3/blob/6e24e2ad6f4b1e32cfa27805a3a948d0de50f3b1/i3bar/src/xcb.c#L1791
3. When the window's fullscreen is disabled,
`handle_visibility_notify()` returns in this line:
https://github.com/i3/i3/blob/6e24e2ad6f4b1e32cfa27805a3a948d0de50f3b1/i3bar/src/xcb.c#L677
because previously `output->visible` was set to `true`

To fix this, I call `cont_child()` more leniently since it is a no-op
when the child is not stopped.

Fixes #3242
Closes #3761
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

i3status/blocks bar hangs up from time to time

3 participants