Update waltham-transmitter patches to weston 5.0 & 6.0
[AGL/meta-agl.git] / meta-agl-profile-graphical / recipes-graphics / wayland / weston / 0018-compositor-add-output-type-to-weston_output.patch
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0018-compositor-add-output-type-to-weston_output.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0018-compositor-add-output-type-to-weston_output.patch
deleted file mode 100644 (file)
index 4c46ec4..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-From 99fb36e62d3d0e3bda3d2984f280f534a629f70c Mon Sep 17 00:00:00 2001
-From: Wataru Mizuno <wmizuno@jp.adit-jv.com>
-Date: Thu, 12 Oct 2017 14:55:13 +0900
-Subject: [PATCH 1/5] compositor: add output type to weston_output
-
-This enables weston to use multiple types of backend
-Each backends have own output structure for each functions
-To avoid invalid member access, type identifier is needed
-
-Signed-off-by: Wataru Mizuno <wmizuno@jp.adit-jv.com>
----
- libweston/compositor-drm.c      | 100 +++++++++++++++++++++++-----------------
- libweston/compositor-fbdev.c    |   1 +
- libweston/compositor-headless.c |   1 +
- libweston/compositor-rdp.c      |   1 +
- libweston/compositor-wayland.c  |   1 +
- libweston/compositor-x11.c      |   1 +
- libweston/compositor.h          |  12 +++++
- 7 files changed, 74 insertions(+), 43 deletions(-)
-
-diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c
-index 1d38f05..0b5b4c4 100644
---- a/libweston/compositor-drm.c
-+++ b/libweston/compositor-drm.c
-@@ -243,14 +243,16 @@ drm_output_find_by_crtc(struct drm_backend *b, uint32_t crtc_id)
-       struct drm_output *output;
-       wl_list_for_each(output, &b->compositor->output_list, base.link) {
--              if (output->crtc_id == crtc_id)
--                      return output;
-+              if(output->base.output_type == OUTPUT_DRM)
-+                      if (output->crtc_id == crtc_id)
-+                              return output;
-       }
-       wl_list_for_each(output, &b->compositor->pending_output_list,
-                        base.link) {
--              if (output->crtc_id == crtc_id)
--                      return output;
-+              if(output->base.output_type == OUTPUT_DRM)
-+                      if (output->crtc_id == crtc_id)
-+                              return output;
-       }
-       return NULL;
-@@ -262,14 +264,16 @@ drm_output_find_by_connector(struct drm_backend *b, uint32_t connector_id)
-       struct drm_output *output;
-       wl_list_for_each(output, &b->compositor->output_list, base.link) {
--              if (output->connector_id == connector_id)
--                      return output;
-+              if(output->base.output_type == OUTPUT_DRM)
-+                      if (output->connector_id == connector_id)
-+                              return output;
-       }
-       wl_list_for_each(output, &b->compositor->pending_output_list,
-                        base.link) {
--              if (output->connector_id == connector_id)
--                      return output;
-+              if(output->base.output_type == OUTPUT_DRM)
-+                      if (output->connector_id == connector_id)
-+                              return output;
-       }
-       return NULL;
-@@ -2433,6 +2437,7 @@ drm_output_enable(struct weston_output *base)
-       struct weston_mode *m;
-       output->dpms_prop = drm_get_prop(b->drm.fd, output->connector, "DPMS");
-+      output->base.output_type = OUTPUT_DRM;
-       if (b->use_pixman) {
-               if (drm_output_init_pixman(output, b) < 0) {
-@@ -2797,38 +2802,42 @@ update_outputs(struct drm_backend *b, struct udev_device *drm_device)
-       wl_list_for_each_safe(output, next, &b->compositor->output_list,
-                             base.link) {
--              bool disconnected = true;
--
--              for (i = 0; i < resources->count_connectors; i++) {
--                      if (connected[i] == output->connector_id) {
--                              disconnected = false;
--                              break;
-+              if (output->base.output_type == OUTPUT_DRM) {
-+                      bool disconnected = true;
-+
-+                      for (i = 0; i < resources->count_connectors; i++) {
-+                              if (connected[i] == output->connector_id) {
-+                                      disconnected = false;
-+                                      break;
-+                              }
-                       }
--              }
--              if (!disconnected)
--                      continue;
-+                      if (!disconnected)
-+                              continue;
--              weston_log("connector %d disconnected\n", output->connector_id);
--              drm_output_destroy(&output->base);
-+                      weston_log("connector %d disconnected\n", output->connector_id);
-+                      drm_output_destroy(&output->base);
-+              }
-       }
-       wl_list_for_each_safe(output, next, &b->compositor->pending_output_list,
-                             base.link) {
--              bool disconnected = true;
--
--              for (i = 0; i < resources->count_connectors; i++) {
--                      if (connected[i] == output->connector_id) {
--                              disconnected = false;
--                              break;
-+              if (output->base.output_type == OUTPUT_DRM) {
-+                      bool disconnected = true;
-+
-+                      for (i = 0; i < resources->count_connectors; i++) {
-+                              if (connected[i] == output->connector_id) {
-+                                      disconnected = false;
-+                                      break;
-+                              }
-                       }
--              }
--              if (!disconnected)
--                      continue;
-+                      if (!disconnected)
-+                              continue;
--              weston_log("connector %d disconnected\n", output->connector_id);
--              drm_output_destroy(&output->base);
-+                      weston_log("connector %d disconnected\n", output->connector_id);
-+                      drm_output_destroy(&output->base);
-+              }
-       }
-       free(connected);
-@@ -2925,18 +2934,21 @@ session_notify(struct wl_listener *listener, void *data)
-                * pending frame callbacks. */
-               wl_list_for_each(output, &compositor->output_list, base.link) {
--                      output->base.repaint_needed = 0;
--                      drmModeSetCursor(b->drm.fd, output->crtc_id, 0, 0, 0);
-+                      if(output->base.output_type == OUTPUT_DRM) {
-+                              output->base.repaint_needed = 0;
-+                              drmModeSetCursor(b->drm.fd, output->crtc_id, 0, 0, 0);
-+                      }
-+              }
-+              if(output->base.output_type == OUTPUT_DRM) {
-+                      output = container_of(compositor->output_list.next,
-+                                            struct drm_output, base.link);
-+
-+                      wl_list_for_each(sprite, &b->sprite_list, link)
-+                              drmModeSetPlane(b->drm.fd,
-+                                              sprite->plane_id,
-+                                              output->crtc_id, 0, 0,
-+                                              0, 0, 0, 0, 0, 0, 0, 0);
-               }
--
--              output = container_of(compositor->output_list.next,
--                                    struct drm_output, base.link);
--
--              wl_list_for_each(sprite, &b->sprite_list, link)
--                      drmModeSetPlane(b->drm.fd,
--                                      sprite->plane_id,
--                                      output->crtc_id, 0, 0,
--                                      0, 0, 0, 0, 0, 0, 0, 0);
-       };
- }
-@@ -3148,7 +3160,8 @@ switch_to_gl_renderer(struct drm_backend *b)
-       }
-       wl_list_for_each(output, &b->compositor->output_list, base.link)
--              pixman_renderer_output_destroy(&output->base);
-+              if(output->base.output_type == OUTPUT_DRM)
-+                      pixman_renderer_output_destroy(&output->base);
-       b->compositor->renderer->destroy(b->compositor);
-@@ -3160,7 +3173,8 @@ switch_to_gl_renderer(struct drm_backend *b)
-       }
-       wl_list_for_each(output, &b->compositor->output_list, base.link)
--              drm_output_init_egl(output, b);
-+              if(output->base.output_type == OUTPUT_DRM)
-+                      drm_output_init_egl(output, b);
-       b->use_pixman = 0;
-diff --git a/libweston/compositor-fbdev.c b/libweston/compositor-fbdev.c
-index 44f0cf5..9cb903e 100644
---- a/libweston/compositor-fbdev.c
-+++ b/libweston/compositor-fbdev.c
-@@ -433,6 +433,7 @@ fbdev_output_enable(struct weston_output *base)
-       int fb_fd;
-       struct wl_event_loop *loop;
-+      output->base.output_type = OUTPUT_FBDEV;
-       /* Create the frame buffer. */
-       fb_fd = fbdev_frame_buffer_open(output, output->device, &output->fb_info);
-       if (fb_fd < 0) {
-diff --git a/libweston/compositor-headless.c b/libweston/compositor-headless.c
-index a1aec6d..b0d5afb 100644
---- a/libweston/compositor-headless.c
-+++ b/libweston/compositor-headless.c
-@@ -148,6 +148,7 @@ headless_output_enable(struct weston_output *base)
-       loop = wl_display_get_event_loop(b->compositor->wl_display);
-       output->finish_frame_timer =
-               wl_event_loop_add_timer(loop, finish_frame_handler, output);
-+      output->base.output_type = OUTPUT_HEADLESS;
-       if (b->use_pixman) {
-               output->image_buf = malloc(output->base.current_mode->width *
-diff --git a/libweston/compositor-rdp.c b/libweston/compositor-rdp.c
-index d9668e8..d525982 100644
---- a/libweston/compositor-rdp.c
-+++ b/libweston/compositor-rdp.c
-@@ -519,6 +519,7 @@ rdp_output_enable(struct weston_output *base)
-       struct rdp_backend *b = to_rdp_backend(base->compositor);
-       struct wl_event_loop *loop;
-+      output->base.output_type = OUTPUT_RDP;
-       output->shadow_surface = pixman_image_create_bits(PIXMAN_x8r8g8b8,
-                                                         output->base.current_mode->width,
-                                                         output->base.current_mode->height,
-diff --git a/libweston/compositor-wayland.c b/libweston/compositor-wayland.c
-index 9d35ef7..66a0dbf 100644
---- a/libweston/compositor-wayland.c
-+++ b/libweston/compositor-wayland.c
-@@ -1164,6 +1164,7 @@ wayland_output_enable(struct weston_output *base)
-       struct wayland_backend *b = to_wayland_backend(base->compositor);
-       int ret = 0;
-+      output->base.output_type = OUTPUT_WAYLAND;
-       weston_log("Creating %dx%d wayland output at (%d, %d)\n",
-                  output->base.current_mode->width,
-                  output->base.current_mode->height,
-diff --git a/libweston/compositor-x11.c b/libweston/compositor-x11.c
-index f9cb461..fcf39e1 100644
---- a/libweston/compositor-x11.c
-+++ b/libweston/compositor-x11.c
-@@ -825,6 +825,7 @@ x11_output_enable(struct weston_output *base)
-               XCB_EVENT_MASK_STRUCTURE_NOTIFY,
-               0
-       };
-+      output->base.output_type = OUTPUT_X11;
-       if (!b->no_input)
-               values[0] |=
-diff --git a/libweston/compositor.h b/libweston/compositor.h
-index 08e728a..51157d0 100644
---- a/libweston/compositor.h
-+++ b/libweston/compositor.h
-@@ -146,9 +146,21 @@ enum dpms_enum {
-       WESTON_DPMS_OFF
- };
-+/* bit compatible with drm definitions. */
-+enum output_type {
-+      OUTPUT_DRM,
-+      OUTPUT_FBDEV,
-+      OUTPUT_HEADLESS,
-+      OUTPUT_RDP,
-+      OUTPUT_WAYLAND,
-+      OUTPUT_X11,
-+      OUTPUT_WALTHAM
-+};
-+
- struct weston_output {
-       uint32_t id;
-       char *name;
-+      enum output_type output_type;
-       void *renderer_state;
--- 
-2.7.4
-