---
 Makefile.am              |  1 +
 src/compositor-wayland.c | 37 ++++++++++++++++++-----------------
 src/compositor-wayland.h | 51 ++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 71 insertions(+), 18 deletions(-)
 create mode 100644 src/compositor-wayland.h

diff --git a/Makefile.am b/Makefile.am
index 3d732de..dcc0488 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -171,6 +171,7 @@ westoninclude_HEADERS =                             \
        src/compositor.h                        \
        src/compositor-x11.h                    \
        src/compositor-drm.h                    \
+       src/compositor-wayland.h                \
        src/weston-launcher.h                   \
        shared/matrix.h                         \
        shared/config-parser.h                  \
diff --git a/src/compositor-wayland.c b/src/compositor-wayland.c
index 40d6f64..f9e5e8f 100644
--- a/src/compositor-wayland.c
+++ b/src/compositor-wayland.c
@@ -37,6 +37,7 @@
 #include <wayland-cursor.h>
 
 #include "compositor.h"
+#include "compositor-wayland.h"
 #include "gl-renderer.h"
 #include "pixman-renderer.h"
 #include "../shared/image-loader.h"
@@ -733,7 +734,7 @@ wayland_output_resize_surface(struct wayland_output *output)
                buffer->output = NULL;
 }
 
-static int
+WL_EXPORT int
 wayland_output_set_windowed(struct wayland_output *output)
 {
        struct wayland_backend *b =
@@ -778,9 +779,9 @@ wayland_output_set_windowed(struct wayland_output *output)
        return 0;
 }
 
-static void
+WL_EXPORT void
 wayland_output_set_fullscreen(struct wayland_output *output,
-                             enum wl_shell_surface_fullscreen_method method,
+                             enum wayland_backend_fullscreen_method method,
                              uint32_t framerate, struct wl_output *target)
 {
        struct wayland_backend *b =
@@ -966,7 +967,7 @@ err_output:
        return -1;
 }
 
-static struct wayland_output *
+WL_EXPORT struct wayland_output *
 wayland_output_create(struct wayland_backend *b, int x, int y,
                      int width, int height, const char *name, int fullscreen,
                      uint32_t transform, int32_t scale)
@@ -1923,13 +1924,14 @@ fullscreen_binding(struct weston_seat *seat_base, 
uint32_t time, uint32_t key,
        weston_output_schedule_repaint(&input->output->base);
 }
 
-static struct wayland_backend *
+WL_EXPORT struct wayland_backend *
 wayland_backend_create(struct weston_compositor *compositor, int use_pixman,
                       const char *display_name,
-                      const char *cursor_theme, int cursor_size)
+                      const char *cursor_theme, int cursor_size, int sprawl)
 {
        struct wayland_backend *b;
        struct wl_event_loop *loop;
+       struct wayland_parent_output *poutput;
        int fd;
 
        b = zalloc(sizeof *b);
@@ -1994,6 +1996,16 @@ wayland_backend_create(struct weston_compositor 
*compositor, int use_pixman,
 
        wl_event_source_check(b->parent.wl_source);
 
+       if (sprawl || b->parent.fshell) {
+               b->sprawl_across_outputs = 1;
+               wl_display_roundtrip(b->parent.wl_display);
+
+               wl_list_for_each(poutput, &b->parent.output_list, link)
+               wayland_output_create_for_parent_output(b, poutput);
+
+               return 0;
+       }
+
        compositor->backend = &b->base;
        return b;
 err_renderer:
@@ -2034,7 +2046,6 @@ backend_init(struct weston_compositor *compositor, int 
*argc, char *argv[],
 {
        struct wayland_backend *b;
        struct wayland_output *output;
-       struct wayland_parent_output *poutput;
        struct weston_config_section *section;
        int x, count, width, height, scale, use_pixman, fullscreen, sprawl;
        const char *section_name, *display_name;
@@ -2069,21 +2080,11 @@ backend_init(struct weston_compositor *compositor, int 
*argc, char *argv[],
        weston_config_section_get_int(section, "cursor-size", &size, 32);
 
        b = wayland_backend_create(compositor, use_pixman, display_name,
-                                  theme, size);
+                                  theme, size, sprawl);
        free(theme);
        if (!b)
                return -1;
 
-       if (sprawl || b->parent.fshell) {
-               b->sprawl_across_outputs = 1;
-               wl_display_roundtrip(b->parent.wl_display);
-
-               wl_list_for_each(poutput, &b->parent.output_list, link)
-                       wayland_output_create_for_parent_output(b, poutput);
-
-               return 0;
-       }
-
        if (fullscreen) {
                output = wayland_output_create(b, 0, 0, width, height,
                                               NULL, 1, 0, 1);
diff --git a/src/compositor-wayland.h b/src/compositor-wayland.h
new file mode 100644
index 0000000..c4d1838
--- /dev/null
+++ b/src/compositor-wayland.h
@@ -0,0 +1,51 @@
+
+#ifndef WESTON_COMPOSITOR_WAYLAND_H
+#define WESTON_COMPOSITOR_WAYLAND_H
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+#include "compositor.h"
+
+struct weston_compositor;
+struct weston_seat;
+struct wayland_backend;
+struct wayland_output;
+
+enum wayland_backend_fullscreen_method {
+       WESTON_WAYLAND_BACKEND_FULLSCREEN_METHOD_DEFAULT = 0,
+       WESTON_WAYLAND_BACKEND_FULLSCREEN_METHOD_SCALE = 1,
+       WESTON_WAYLAND_BACKEND_FULLSCREEN_METHOD_DRIVER = 2,
+       WESTON_WAYLAND_BACKEND_FULLSCREEN_METHOD_FILL = 3,
+};
+
+struct wayland_backend *
+wayland_backend_create(struct weston_compositor *c, int use_pixman,
+                      const char *display_name,
+                      const char *cursor_theme, int cursor_size,
+                      int sprawl);
+
+struct wayland_output *
+wayland_output_create(struct wayland_backend *b, int x, int y,
+                     int width, int height, const char *name, int fullscreen,
+                     uint32_t transform, int32_t scale);
+int
+wayland_output_is_fullscreen(struct wayland_output *output);
+int
+wayland_output_set_windowed(struct wayland_output *output);
+void
+wayland_output_set_fullscreen(struct wayland_output *output,
+                             enum wayland_backend_fullscreen_method method,
+                             uint32_t framerate, struct wl_output *target);
+struct weston_output *
+wayland_output_get_base(struct wayland_output *o);
+struct wayland_output *
+wayland_backend_find_output(struct wayland_backend *b,
+                           struct weston_seat *seat);
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif
-- 
2.1.3

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to