[PATCH weston] desktop-shell: add option to avoid creating the panel
Jonny Lamb
jonny.lamb at collabora.co.uk
Tue Aug 12 06:09:46 PDT 2014
This option is so we can disable showing any panel at all. The default
is to continue showing the panel and no example is added to weston.ini
because it's an uncommon request.
---
clients/desktop-shell.c | 38 +++++++++++++++++++++++++++++++-------
man/weston.ini.man | 5 +++++
2 files changed, 36 insertions(+), 7 deletions(-)
diff --git a/clients/desktop-shell.c b/clients/desktop-shell.c
index 73b2134..db4a1fd 100644
--- a/clients/desktop-shell.c
+++ b/clients/desktop-shell.c
@@ -1130,7 +1130,8 @@ static void
output_destroy(struct output *output)
{
background_destroy(output->background);
- panel_destroy(output->panel);
+ if (output->panel)
+ panel_destroy(output->panel);
wl_output_destroy(output->output);
wl_list_remove(&output->link);
@@ -1160,7 +1161,8 @@ output_handle_geometry(void *data,
{
struct output *output = data;
- window_set_buffer_transform(output->panel->window, transform);
+ if (output->panel)
+ window_set_buffer_transform(output->panel->window, transform);
window_set_buffer_transform(output->background->window, transform);
}
@@ -1187,7 +1189,8 @@ output_handle_scale(void *data,
{
struct output *output = data;
- window_set_buffer_scale(output->panel->window, scale);
+ if (output->panel)
+ window_set_buffer_scale(output->panel->window, scale);
window_set_buffer_scale(output->background->window, scale);
}
@@ -1198,15 +1201,36 @@ static const struct wl_output_listener output_listener = {
output_handle_scale
};
+static int
+want_panel(struct desktop *desktop)
+{
+ struct weston_config_section *s;
+ char *location = NULL;
+ int ret = 1;
+
+ s = weston_config_get_section(desktop->config, "shell", NULL, NULL);
+ weston_config_section_get_string(s, "panel-location",
+ &location, "top");
+
+ if (strcmp(location, "top") != 0)
+ ret = 0;
+
+ free(location);
+
+ return ret;
+}
+
static void
output_init(struct output *output, struct desktop *desktop)
{
struct wl_surface *surface;
- output->panel = panel_create(desktop);
- surface = window_get_wl_surface(output->panel->window);
- desktop_shell_set_panel(desktop->shell,
- output->output, surface);
+ if (want_panel(desktop)) {
+ output->panel = panel_create(desktop);
+ surface = window_get_wl_surface(output->panel->window);
+ desktop_shell_set_panel(desktop->shell,
+ output->output, surface);
+ }
output->background = background_create(desktop);
surface = window_get_wl_surface(output->background->window);
diff --git a/man/weston.ini.man b/man/weston.ini.man
index 667f70a..b47f6fe 100644
--- a/man/weston.ini.man
+++ b/man/weston.ini.man
@@ -186,6 +186,11 @@ digit pairs are in order transparency, red, green, and blue. Examples:
.fi
.RE
.TP 7
+.BI "panel-location=" top
+sets the location of the panel (string). Can be
+.B top,
+.B none.
+.TP 7
.BI "locking=" true
enables screen locking (boolean).
.TP 7
--
2.1.0.rc1
More information about the wayland-devel
mailing list