Add a toy-display object that caches state.
This will be GdkDisplay for GTK+ on Wayland etc. This restores
the terminal fullscreen mode.
diff --git a/terminal.c b/terminal.c
index 02a4f79..d380bd8 100644
--- a/terminal.c
+++ b/terminal.c
@@ -53,7 +53,7 @@
struct terminal {
struct window *window;
- struct wl_display *display;
+ struct display *display;
struct wl_compositor *compositor;
int redraw_scheduled, redraw_pending;
char *data;
@@ -540,7 +540,7 @@
}
static struct terminal *
-terminal_create(struct wl_display *display, int fd, int fullscreen)
+terminal_create(struct display *display, int fullscreen)
{
struct terminal *terminal;
@@ -550,13 +550,13 @@
memset(terminal, 0, sizeof *terminal);
terminal->fullscreen = fullscreen;
- terminal->window = window_create(display, fd, "Wayland Terminal",
+ terminal->window = window_create(display, "Wayland Terminal",
500, 100, 500, 400);
terminal->display = display;
terminal->redraw_scheduled = 1;
terminal->margin = 5;
- terminal->compositor = wl_display_get_compositor(display);
+ terminal->compositor = display_get_compositor(display);
window_set_fullscreen(terminal->window, terminal->fullscreen);
window_set_resize_handler(terminal->window, resize_handler, terminal);
@@ -628,6 +628,7 @@
int fd;
GMainLoop *loop;
GSource *source;
+ struct display *d;
struct terminal *terminal;
GOptionContext *context;
GError *error;
@@ -651,11 +652,12 @@
return -1;
}
+ d = display_create(display, fd);
loop = g_main_loop_new(NULL, FALSE);
source = wl_glib_source_new(display);
g_source_attach(source, NULL);
- terminal = terminal_create(display, fd, option_fullscreen);
+ terminal = terminal_create(d, option_fullscreen);
if (terminal_run(terminal, "/bin/bash"))
exit(EXIT_FAILURE);