xdg_shell_v6: Remove some exception handling 74/295274/1
authorSeunghun Lee <shiin.lee@samsung.com>
Thu, 8 Jun 2023 06:32:57 +0000 (15:32 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Tue, 4 Jul 2023 09:23:37 +0000 (18:23 +0900)
This is to support for tizen applications. They are not conforming to
some of the rules that wayland specification requires, for example, the
rule that the surface can not have more than one role.

Change-Id: I1bc782ba862c6552c6307efd73170051c1cc0906

src/xdg_shell_v6/xdg_surface_v6.c
src/xdg_shell_v6/xdg_toplevel_v6.c

index 8e383a0..fe5e0c0 100644 (file)
@@ -76,15 +76,6 @@ create_xdg_surface_v6(struct ds_xdg_client_v6 *client, struct ds_surface *ds_sur
         return NULL;
     }
 
-    if (ds_surface_has_buffer(surface->ds_surface)) {
-        wl_resource_destroy(surface->resource);
-        free(surface);
-        wl_resource_post_error(client->resource,
-                ZXDG_SURFACE_V6_ERROR_UNCONFIGURED_BUFFER,
-                "xdg_surface_v6 must not have a buffer at creation");
-        return NULL;
-    }
-
     wl_list_init(&surface->configure_list);
 
     wl_signal_init(&surface->events.destroy);
@@ -192,52 +183,6 @@ destroy_xdg_surface_v6_role(struct ds_xdg_surface_v6 *surface)
     surface->role = DS_XDG_SURFACE_V6_ROLE_NONE;
 }
 
-void
-handle_xdg_surface_v6_commit(struct ds_surface *ds_surface)
-{
-    struct ds_xdg_surface_v6 *surface;
-
-    surface = ds_surface_get_role_data(ds_surface);
-    if (!surface)
-        return;
-
-    surface->current = surface->pending;
-
-    switch (surface->role) {
-        case DS_XDG_SURFACE_V6_ROLE_NONE:
-            // inert toplevel or popup
-            break;
-        case DS_XDG_SURFACE_V6_ROLE_TOPLEVEL:
-            handle_xdg_toplevel_v6_committed(surface->toplevel);
-            break;
-        case DS_XDG_SURFACE_V6_ROLE_POPUP:
-            // TODO
-            break;
-    }
-
-    if (!surface->added) {
-        surface->added = true;
-        wl_signal_emit_mutable(&surface->client->shell->events.new_surface, surface);
-    }
-
-    if (surface->configured &&
-            ds_surface_has_buffer(surface->ds_surface) &&
-            !surface->mapped) {
-        surface->mapped = true;
-        wl_signal_emit_mutable(&surface->events.map, surface);
-    }
-}
-
-void handle_xdg_surface_v6_precommit(struct ds_surface *ds_surface)
-{
-    struct ds_xdg_surface_v6 *surface;
-
-    surface = ds_surface_get_role_data(ds_surface);
-
-    // TODO
-    (void)surface;
-}
-
 uint32_t
 ds_xdg_surface_v6_schedule_configure(struct ds_xdg_surface_v6 *surface)
 {
@@ -285,19 +230,31 @@ xdg_surface_v6_handle_surface_commit(struct wl_listener *listener, void *data)
 
     surface = wl_container_of(listener, surface, listener.surface_commit);
 
-    if (ds_surface_has_buffer(surface->ds_surface) &&
-            !surface->configured) {
-        wl_resource_post_error(surface->resource,
-                ZXDG_SURFACE_V6_ERROR_UNCONFIGURED_BUFFER,
-                "xdg_surface_v6 has never been configured");
-        return;
+    surface->current = surface->pending;
+
+    switch (surface->role) {
+        case DS_XDG_SURFACE_V6_ROLE_NONE:
+            // inert toplevel or popup
+            break;
+        case DS_XDG_SURFACE_V6_ROLE_TOPLEVEL:
+            handle_xdg_toplevel_v6_committed(surface->toplevel);
+            // TODO
+            break;
+        case DS_XDG_SURFACE_V6_ROLE_POPUP:
+            // TODO
+            break;
     }
 
-    if (!ds_surface_get_role(surface->ds_surface)) {
-        wl_resource_post_error(surface->resource,
-                ZXDG_SURFACE_V6_ERROR_NOT_CONSTRUCTED,
-                "xdg_surface_v6 must have a role");
-        return;
+    if (!surface->added) {
+        surface->added = true;
+        wl_signal_emit_mutable(&surface->client->shell->events.new_surface, surface);
+    }
+
+    if (surface->configured &&
+            ds_surface_has_buffer(surface->ds_surface) &&
+            !surface->mapped) {
+        surface->mapped = true;
+        wl_signal_emit_mutable(&surface->events.map, surface);
     }
 }
 
index 194dbe7..6a8a7a2 100644 (file)
@@ -4,12 +4,6 @@
 #include "util.h"
 #include "xdg_shell_v6.h"
 
-static const struct ds_surface_role xdg_toplevel_v6_surface_role =
-{
-    .name = "xdg_toplevel_v6",
-    .commit = handle_xdg_surface_v6_commit,
-};
-
 static const struct zxdg_toplevel_v6_interface xdg_toplevel_v6_impl;
 
 static void xdg_toplevel_v6_handle_resource_destroy(struct wl_resource *resource);
@@ -105,10 +99,6 @@ ds_xdg_toplevel_v6_set_resizing(struct ds_xdg_toplevel_v6 *toplevel,
 void
 create_xdg_toplevel_v6(struct ds_xdg_surface_v6 *surface, uint32_t id)
 {
-    if (!ds_surface_set_role(surface->ds_surface, &xdg_toplevel_v6_surface_role,
-                surface, surface->resource, ZXDG_SHELL_V6_ERROR_ROLE))
-        return;
-
     if (surface->role != DS_XDG_SURFACE_V6_ROLE_NONE) {
         wl_resource_post_error(surface->resource,
                 ZXDG_SURFACE_V6_ERROR_ALREADY_CONSTRUCTED,
@@ -225,7 +215,6 @@ error_out:
 void
 destroy_xdg_toplevel_v6(struct ds_xdg_toplevel_v6 *toplevel)
 {
-    ds_surface_reset_role_data(toplevel->base->ds_surface);
     wl_resource_set_user_data(toplevel->resource, NULL);
     free(toplevel);
 }