[PATCH] compositor-x11: resize output to x11 window size in fullscreen mode

Rafal Mielniczuk rafal.mielniczuk2 at gmail.com
Tue Feb 12 09:38:27 PST 2013


In fullscreen mode we need to adjust output dimensions to match x11
window size. In other case, if there is no output section in weston.ini,
weston output will have default 1024x640 size, while rest of the screen
remains black and unusable.

This should fix
https://bugs.freedesktop.org/show_bug.cgi?id=60608
---
 src/compositor-x11.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/compositor-x11.c b/src/compositor-x11.c
index 2d243da..0d43ce6 100644
--- a/src/compositor-x11.c
+++ b/src/compositor-x11.c
@@ -664,6 +664,7 @@ x11_compositor_create_output(struct x11_compositor *c, int x, int y,
 	char title[32];
 	struct x11_output *output;
 	xcb_screen_iterator_t iter;
+	xcb_get_geometry_reply_t *geom;
 	struct wm_normal_hints normal_hints;
 	struct wl_event_loop *loop;
 	uint32_t mask = XCB_CW_EVENT_MASK | XCB_CW_CURSOR;
@@ -758,6 +759,19 @@ x11_compositor_create_output(struct x11_compositor *c, int x, int y,
 
 	x11_output_wait_for_map(c, output);
 
+	if (fullscreen) {
+		/**
+		 * In fullscreen mode resize weston output to x11 window size
+		 */
+		geom = xcb_get_geometry_reply(c->conn, xcb_get_geometry (c->conn, output->window), NULL);
+		width = geom->width;
+		height = geom->height;
+		output->mode.width = width;
+		output->mode.height = height;
+
+		free(geom);
+	}
+
 	output->base.origin = output->base.current;
 	if (c->use_pixman)
 		output->base.repaint = x11_output_repaint_shm;
-- 
1.8.1.3



More information about the wayland-devel mailing list