[PATCH weston v2 14/17] libweston: expose the wayland backend API
Giulio Camuffo
giuliocamuffo at gmail.com
Thu Dec 4 13:01:20 PST 2014
---
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 38b835a..109f7d7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -178,6 +178,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 1c572e9..bbd5e7a 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)
@@ -1906,13 +1907,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);
@@ -1977,6 +1979,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:
@@ -2017,7 +2029,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;
@@ -2052,21 +2063,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
More information about the wayland-devel
mailing list