compositor: Remove Waltham support 23/28923/2
authorMarius Vlad <marius.vlad@collabora.com>
Tue, 23 May 2023 12:48:56 +0000 (15:48 +0300)
committerMarius Vlad <marius.vlad@collabora.com>
Wed, 31 May 2023 07:36:15 +0000 (07:36 +0000)
Waltham hasn't been used in a while, its support has been removed for
some time, we've been deprecating it last release so it's time to remove
it from the compositor as well.

Bug-AGL: SPEC-4669
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Iaf1e467b1228051fd96cac424ac6781d67f9fefa

meson.build
meson_options.txt
src/compositor.c
src/desktop.c
src/ivi-compositor.h
src/shell.c

index 388f785..2079fb1 100644 (file)
@@ -64,25 +64,6 @@ foreach depname : depnames
 endforeach
 
 
-# the transmitter plug-in requires waltham but we don't have a cflags or libs
-# for it so we add waltham depends here. Further more, the output is being
-# handled by remoting plug-in
-depnames_waltham = [
-  'waltham', 'waltham-transmitter',
-]
-
-deps_waltham = []
-foreach depname : depnames_waltham
-  dep = dependency(depname, required: false)
-  if dep.found()
-    deps_waltham += dep
-  else
-    message('Waltham requires @0@ which was not found. '.format(depname))
-  endif
-endforeach
-
-deps_waltham += deps_remoting
-
 agl_shell_xml = files('protocol/agl-shell.xml')
 agl_shell_desktop_xml = files('protocol/agl-shell-desktop.xml')
 agl_screenshooter = files('protocol/agl-screenshooter.xml')
@@ -225,13 +206,6 @@ if deps_remoting.length() == depnames.length()
   message('Found remoting depends, enabling remoting')
 endif
 
-if deps_waltham.length() == depnames_waltham.length() + depnames.length() and not get_option('waltham')
-  message('Found waltham depends, but waltham is deprecated')
-elif deps_waltham.length() == depnames_waltham.length() + depnames.length() and get_option('waltham')
-  config_h.set('HAVE_WALTHAM', 1)
-  message('Found waltham depends, enabling waltham')
-endif
-
 if dep_libsmack.found()
   config_h.set('HAVE_SMACK', 1)
   deps_libweston += dep_libsmack
index e4d8f3d..1e54773 100644 (file)
@@ -12,10 +12,3 @@ option(
         value: true,
         description: 'Build gRPC proxy which exposes some of the agl-shell protocol over a gRPC API'
 )
-
-option(
-        'waltham',
-        type: 'boolean',
-        value: false,
-        description: 'Build compositor with Waltham support. Disabled by default'
-)
index ef06314..9b0ac5f 100644 (file)
 #include "remote.h"
 #endif
 
-#ifdef HAVE_WALTHAM
-#include <waltham-transmitter/transmitter_api.h>
-#endif
-
 static int cached_tm_mday = -1;
 static struct weston_log_scope *log_scope;
 
@@ -707,38 +703,6 @@ heads_changed(struct wl_listener *listener, void *arg)
        }
 }
 
-#ifdef HAVE_WALTHAM
-static int
-load_waltham_plugin(struct ivi_compositor *ivi, struct weston_config *config)
-{
-       struct weston_compositor *compositor = ivi->compositor;
-       int (*module_init)(struct weston_compositor *wc);
-
-       module_init = weston_load_module("waltham-transmitter.so",
-                                        "wet_module_init");
-       if (!module_init)
-               return -1;
-
-       if (module_init(compositor) < 0)
-               return -1;
-
-       ivi->waltham_transmitter_api = weston_get_transmitter_api(compositor);
-       if (!ivi->waltham_transmitter_api) {
-               weston_log("Failed to load waltham-transmitter plugin.\n");
-               return -1;
-       }
-
-       weston_log("waltham-transmitter plug-in loaded\n");
-       return 0;
-}
-#else
-static int
-load_waltham_plugin(struct ivi_compositor *ivi, struct weston_config *config)
-{
-       return -1;
-}
-#endif
-
 #ifdef HAVE_REMOTING
 static int
 drm_backend_remoted_output_configure(struct weston_output *output,
@@ -915,62 +879,6 @@ ivi_enable_remote_outputs(struct ivi_compositor *ivi)
        }
 }
 
-static void
-ivi_enable_waltham_outputs(struct ivi_compositor *ivi)
-{
-       struct weston_config_section *transmitter_section = NULL;
-       const char *sect_name;
-       struct weston_config *config = ivi->config;
-
-       while (weston_config_next_section(config, &transmitter_section, &sect_name)) {
-               if (strcmp(sect_name, "transmitter-output"))
-                       continue;
-
-               struct ivi_output *ivi_output = NULL;
-               bool output_found = false;
-               char *_name = NULL;
-
-               weston_config_section_get_string(transmitter_section,
-                               "name", &_name, NULL);
-               wl_list_for_each(ivi_output, &ivi->outputs, link) {
-                       if (!strcmp(ivi_output->name, _name)) {
-                               output_found = true;
-                               break;
-                       }
-               }
-
-               if (output_found) {
-                       free(_name);
-                       continue;
-               }
-
-               ivi_output = zalloc(sizeof(*ivi_output));
-               if (!ivi_output) {
-                       free(_name);
-                       continue;
-               }
-
-               ivi_output->ivi = ivi;
-               ivi_output->name = _name;
-               ivi_output->config = transmitter_section;
-
-               if (remote_output_init(ivi_output, ivi->compositor,
-                                       transmitter_section, ivi->remoting_api)) {
-                       free(ivi_output->name);
-                       free(ivi_output);
-                       continue;
-               }
-
-               ivi_output->type = OUTPUT_WALTHAM;
-               ivi_output->output_destroy.notify = handle_output_destroy;
-               weston_output_add_destroy_listener(ivi_output->output,
-                               &ivi_output->output_destroy);
-
-               wl_list_insert(&ivi->outputs, &ivi_output->link);
-               ivi_output_configure_app_id(ivi_output);
-       }
-}
-
 static int
 load_remoting_plugin(struct ivi_compositor *ivi, struct weston_config *config)
 {
@@ -1050,7 +958,6 @@ load_drm_backend(struct ivi_compositor *ivi, int *argc, char *argv[])
        }
 
        load_remoting_plugin(ivi, ivi->config);
-       load_waltham_plugin(ivi, ivi->config);
 
 error:
        free(config.gbm_format);
@@ -1962,9 +1869,6 @@ int wet_main(int argc, char *argv[], const struct weston_testsuite_data *test_da
        if (ivi.remoting_api)
                ivi_enable_remote_outputs(&ivi);
 
-       if (ivi.waltham_transmitter_api)
-               ivi_enable_waltham_outputs(&ivi);
-
        if (create_listening_socket(display, socket_name) < 0)
                goto error_compositor;
 
index 340f14f..ed648c2 100644 (file)
@@ -325,10 +325,6 @@ desktop_surface_removed(struct weston_desktop_surface *dsurface, void *userdata)
        if (ivi_seat && ivi_seat->focused_surface == wsurface)
                ivi_seat->focused_surface = NULL;
 
-       if (surface->role == IVI_SURFACE_ROLE_REMOTE &&
-           output->type == OUTPUT_REMOTE)
-               ivi_destroy_waltham_destroy(surface);
-
        /* check if there's a last 'remote' surface and insert a black
         * surface view if there's no background set for that output
         */
index 857b816..30b05e3 100644 (file)
@@ -77,7 +77,6 @@ struct ivi_compositor {
        const struct weston_windowed_output_api *window_api;
        const struct weston_drm_output_api *drm_api;
        const struct weston_remoting_api *remoting_api;
-       const struct weston_transmitter_api *waltham_transmitter_api;
 
        struct wl_global *agl_shell;
        struct wl_global *agl_shell_desktop;
@@ -135,9 +134,6 @@ struct ivi_surface;
 enum ivi_output_type {
        OUTPUT_LOCAL,
        OUTPUT_REMOTE,
-       /* same as remote but we need to signal the transmitter plug-in
-        * for the surfaces to have to be forwarded to those remoted outputs */
-       OUTPUT_WALTHAM,
 };
 
 struct ivi_output {
@@ -269,13 +265,6 @@ enum ivi_surface_flags {
        IVI_SURFACE_PROP_POSITION = (1 << 1),
 };
 
-/* the waltham surface is a pointer type as well and
- * in order to avoid adding ifdef for waltham use a
- * generic pointer, which will be only be valid when the
- * surface is a remote out on a waltham type of output */
-struct ivi_surface_waltham {
-       void *transmitter_surface;
-};
 
 struct ivi_surface {
        struct ivi_compositor *ivi;
@@ -313,7 +302,6 @@ struct ivi_surface {
                struct ivi_remote_surface remote;
        };
 
-       struct ivi_surface_waltham waltham_surface;
        struct wl_listener listener_advertise_app;
        struct wl_signal signal_advertise_app;
 };
@@ -472,9 +460,6 @@ ivi_seat_reset_caps_sent(struct ivi_compositor *ivi);
 void
 agl_shell_desktop_advertise_application_id(struct ivi_compositor *ivi,
                                           struct ivi_surface *surface);
-void
-ivi_destroy_waltham_destroy(struct ivi_surface *surface);
-
 void
 ivi_check_pending_surface_desktop(struct ivi_surface *surface,
                                  enum ivi_surface_role *role);
index 07a7e98..2f8a722 100644 (file)
 #include "agl-shell-server-protocol.h"
 #include "agl-shell-desktop-server-protocol.h"
 
-#ifdef HAVE_WALTHAM
-#include <waltham-transmitter/transmitter_api.h>
-#endif
-
 static void
 create_black_curtain_view(struct ivi_output *output);
 
@@ -125,88 +121,6 @@ ivi_set_desktop_surface_fullscreen(struct ivi_surface *surface)
        agl_shell_desktop_advertise_application_id(ivi, surface);
 }
 
-#ifdef HAVE_WALTHAM
-void
-ivi_destroy_waltham_destroy(struct ivi_surface *surface)
-{
-       struct ivi_compositor *ivi = surface->ivi;
-       const struct weston_transmitter_api *api =
-               ivi->waltham_transmitter_api;
-
-       if (!api)
-               return;
-
-       if (surface->waltham_surface.transmitter_surface)
-               api->surface_destroy(surface->waltham_surface.transmitter_surface);
-}
-
-static void
-ivi_output_notify_waltham_plugin(struct ivi_surface *surface)
-{
-       struct ivi_compositor *ivi = surface->ivi;
-       const struct weston_transmitter_api *api = ivi->waltham_transmitter_api;
-       struct weston_transmitter *transmitter;
-       struct weston_transmitter_remote *trans_remote;
-       struct weston_surface *weston_surface;
-       struct weston_output *woutput = surface->remote.output->output;
-       const char *app_id;
-
-       if (!api)
-               return;
-
-       transmitter = api->transmitter_get(ivi->compositor);
-       if (!transmitter)
-               return;
-
-       trans_remote = api->get_transmitter_remote(woutput->name, transmitter);
-       if (!trans_remote) {
-               weston_log("Could not find a valie weston_transmitter_remote "
-                               "that matches the output %s\n", woutput->name);
-               return;
-       }
-
-       app_id = weston_desktop_surface_get_app_id(surface->dsurface);
-       weston_surface =
-               weston_desktop_surface_get_surface(surface->dsurface);
-
-       weston_log("Forwarding app_id %s to remote %s\n", app_id, woutput->name);
-
-       /* this will have the effect of informing the remote side to create a
-        * surface with the name app_id. W/ xdg-shell the following happens:
-        *
-        * compositor (server):
-        * surface_push_to_remote():
-        *      waltham-transmitter plug-in
-        *              -> wthp_ivi_app_id_surface_create()
-        *
-        * client -- on the receiver side:
-        *      -> wthp_ivi_app_id_surface_create()
-        *              -> wth_receiver_weston_main()
-        *                      -> wl_compositor_create_surface()
-        *                      -> xdg_wm_base_get_xdg_surface
-        *                      -> xdg_toplevel_set_app_id()
-        *                      -> gst_init()
-        *                      -> gst_parse_launch()
-        *
-        * wth_receiver_weston_main() will be invoked from the handler of
-        * wthp_ivi_app_id_surface_create() and is responsible for setting-up
-        * the gstreamer pipeline as well.
-        */
-       surface->waltham_surface.transmitter_surface =
-           api->surface_push_to_remote(weston_surface, app_id, trans_remote, NULL);
-}
-
-#else
-void
-ivi_destroy_waltham_destroy(struct ivi_surface *surface)
-{
-}
-static void
-ivi_output_notify_waltham_plugin(struct ivi_surface *surface)
-{
-}
-#endif
-
 static void
 ivi_set_desktop_surface_remote(struct ivi_surface *surface)
 {
@@ -227,9 +141,6 @@ ivi_set_desktop_surface_remote(struct ivi_surface *surface)
        if (view->is_mapped || view->surface->is_mapped)
                remove_black_curtain(output);
 
-       if (output->type == OUTPUT_WALTHAM)
-               ivi_output_notify_waltham_plugin(surface);
-
        wl_list_insert(&ivi->surfaces, &surface->link);
 }