Force roundtrip after applying settings

This commit is contained in:
Jason Francis 2019-08-14 14:20:11 -04:00
parent 3d69ae73d3
commit 27d7067762
3 changed files with 9 additions and 3 deletions

View File

@ -150,7 +150,10 @@ static gboolean send_apply(gpointer data) {
wl_list_insert(outputs, &output->link); wl_list_insert(outputs, &output->link);
fill_output_from_form(output, GTK_WIDGET(form_iter->data)); fill_output_from_form(output, GTK_WIDGET(form_iter->data));
} }
wd_apply_state(state, outputs); GdkWindow *window = gtk_widget_get_window(state->stack);
GdkDisplay *display = gdk_window_get_display(window);
struct wl_display *wl_display = gdk_wayland_display_get_wl_display(display);
wd_apply_state(state, outputs, wl_display);
state->apply_pending = false; state->apply_pending = false;
return FALSE; return FALSE;
} }

View File

@ -100,7 +100,8 @@ static const struct zwlr_output_configuration_v1_listener config_listener = {
.cancelled = config_handle_cancelled, .cancelled = config_handle_cancelled,
}; };
void wd_apply_state(struct wd_state *state, struct wl_list *new_outputs) { void wd_apply_state(struct wd_state *state, struct wl_list *new_outputs,
struct wl_display *display) {
struct zwlr_output_configuration_v1 *config = struct zwlr_output_configuration_v1 *config =
zwlr_output_manager_v1_create_configuration(state->output_manager, state->serial); zwlr_output_manager_v1_create_configuration(state->output_manager, state->serial);
@ -154,6 +155,8 @@ void wd_apply_state(struct wd_state *state, struct wl_list *new_outputs) {
} }
zwlr_output_configuration_v1_apply(config); zwlr_output_configuration_v1_apply(config);
wl_display_roundtrip(display);
} }
static void wd_frame_destroy(struct wd_frame *frame) { static void wd_frame_destroy(struct wd_frame *frame) {

View File

@ -281,7 +281,7 @@ void wd_add_output_management_listener(struct wd_state *state, struct wl_display
/* /*
* Sends updated display configuration back to the compositor. * Sends updated display configuration back to the compositor.
*/ */
void wd_apply_state(struct wd_state *state, struct wl_list *new_outputs); void wd_apply_state(struct wd_state *state, struct wl_list *new_outputs, struct wl_display *display);
/* /*
* Queues capture of the next frame of all screens. * Queues capture of the next frame of all screens.