aboutsummaryrefslogtreecommitdiffstats
path: root/meta-agl/recipes-graphics/wayland/weston/0001-desktop-shell-add-option-to-avoid-creating-the-panel.patch
blob: 5e8c3c9dc813d68a274ff8cc55bb6ae30939643b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
From e67118c80ad411ac46b7096aae2635510c80ea6d Mon Sep 17 00:00:00 2001
From: Jonny Lamb <jonny.lamb@collabora.co.uk>
Date: Tue, 12 Aug 2014 15:07:51 +0200
Subject: desktop-shell: add option to avoid creating the panel

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.

Tested-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
---

--- a/clients/desktop-shell.c	2015-11-05 11:51:26.272052133 +0000
+++ b/clients/desktop-shell.c	2015-11-05 11:56:19.666887702 +0000
@@ -1130,7 +1130,8 @@
 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 @@
 {
 	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 @@
 {
 	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 @@
 	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);
--- a/man/weston.ini.man	2015-11-05 11:56:36.763111313 +0000
+++ b/man/weston.ini.man	2015-11-05 12:06:57.097226512 +0000
@@ -186,6 +186,11 @@
 .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