summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Mikkel Oscar Lyderik <mikkeloscar@gmail.com>2016-03-17 12:05:54 +0100
committerLibravatar Mikkel Oscar Lyderik <mikkeloscar@gmail.com>2016-03-17 12:05:54 +0100
commit9faa4ba0a05f63ad0822b2b6e9b5b9239ecd6838 (patch)
treecf97416b118c61456109c05eed820702b7d03f09
parentRevert "Render outputs as soon as wlc is ready" (diff)
downloadsway-9faa4ba0a05f63ad0822b2b6e9b5b9239ecd6838.tar.gz
sway-9faa4ba0a05f63ad0822b2b6e9b5b9239ecd6838.tar.zst
sway-9faa4ba0a05f63ad0822b2b6e9b5b9239ecd6838.zip
Schedule render when adding bg and panel.
This should be a real fix for #509 This schedules a render when a background or panel is added to sway through the desktop shell interface, that makes sure the render isn't scheduled before the bg or panel is ready and you don't end up with a black screen until the cursor is moved.
-rw-r--r--sway/extensions.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sway/extensions.c b/sway/extensions.c
index 2d17292a..b3984595 100644
--- a/sway/extensions.c
+++ b/sway/extensions.c
@@ -1,6 +1,7 @@
1#include <stdlib.h> 1#include <stdlib.h>
2#include <wlc/wlc.h> 2#include <wlc/wlc.h>
3#include <wlc/wlc-wayland.h> 3#include <wlc/wlc-wayland.h>
4#include <wlc/wlc-render.h>
4#include "wayland-desktop-shell-server-protocol.h" 5#include "wayland-desktop-shell-server-protocol.h"
5#include "wayland-swaylock-server-protocol.h" 6#include "wayland-swaylock-server-protocol.h"
6#include "layout.h" 7#include "layout.h"
@@ -77,6 +78,7 @@ static void set_background(struct wl_client *client, struct wl_resource *resourc
77 config->wl_surface_res = surface; 78 config->wl_surface_res = surface;
78 list_add(desktop_shell.backgrounds, config); 79 list_add(desktop_shell.backgrounds, config);
79 wl_resource_set_destructor(surface, background_surface_destructor); 80 wl_resource_set_destructor(surface, background_surface_destructor);
81 wlc_output_schedule_render(config->output);
80} 82}
81 83
82static void set_panel(struct wl_client *client, struct wl_resource *resource, 84static void set_panel(struct wl_client *client, struct wl_resource *resource,
@@ -93,6 +95,7 @@ static void set_panel(struct wl_client *client, struct wl_resource *resource,
93 wl_resource_set_destructor(surface, panel_surface_destructor); 95 wl_resource_set_destructor(surface, panel_surface_destructor);
94 desktop_shell.panel_size = *wlc_surface_get_size(config->surface); 96 desktop_shell.panel_size = *wlc_surface_get_size(config->surface);
95 arrange_windows(&root_container, -1, -1); 97 arrange_windows(&root_container, -1, -1);
98 wlc_output_schedule_render(config->output);
96} 99}
97 100
98static void desktop_set_lock_surface(struct wl_client *client, struct wl_resource *resource, struct wl_resource *surface) { 101static void desktop_set_lock_surface(struct wl_client *client, struct wl_resource *resource, struct wl_resource *surface) {