waltham-transmitter: Migrate to weston 6.0 89/22089/1
authorVeeresh Kadasani <external.vkadasani@jp.adit-jv.com>
Mon, 5 Aug 2019 01:36:28 +0000 (10:36 +0900)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Mon, 5 Aug 2019 21:52:08 +0000 (21:52 +0000)
SPEC-2696

Change-Id: Ideeb27c8cf65e4370777a9127868ef800645be26
Signed-off-by: Veeresh Kadasani <external.vkadasani@jp.adit-jv.com>
(cherry picked from commit 0fc0e974749f4ce35e14c23b050aa8fe693c3ce5)

waltham-transmitter/transmitter-plugin/input.c
waltham-transmitter/transmitter-plugin/output.c
waltham-transmitter/transmitter-plugin/plugin.c
waltham-transmitter/transmitter-plugin/plugin.h
waltham-transmitter/waltham-renderer/CMakeLists.txt

index e00546b..9d35f3f 100644 (file)
@@ -1271,8 +1271,10 @@ fake_pointer_timer_handler(void *data)
        struct weston_transmitter_seat *seat = data;
        wl_fixed_t x, y;
        uint32_t time;
+       struct timespec timespec;
 
-       time = weston_compositor_get_time();
+       weston_compositor_get_time(&timespec);
+       time=timespec.tv_sec * 1000 + timespec.tv_nsec / 1000000;
 
        fake_pointer_get_position(seat, 18.0 / 180.0 * M_PI, &x, &y);
        transmitter_seat_pointer_motion(seat, time, x, y);
index 6768eee..dc7d5d8 100644 (file)
@@ -122,10 +122,10 @@ transmitter_output_destroy(struct weston_transmitter_output *output)
 {
        wl_list_remove(&output->link);
 
+       struct weston_head *head=weston_output_get_first_head(&output->base);
        free_mode_list(&output->base.mode_list);
-       free(output->base.serial_number);
-       free(output->base.model);
-       free(output->base.make);
+       weston_head_release(head);
+       free(head);
 
        weston_output_destroy(&output->base);
        free(output);
@@ -139,20 +139,26 @@ transmitter_output_destroy_(struct weston_output *base)
        transmitter_output_destroy(output);
 }
 
+static int
+transmitter_output_finish_frame_handler(void *data)
+{
+       struct weston_transmitter_output *output = data;
+       struct timespec now;
+       weston_compositor_read_presentation_clock(output->base.compositor, &now);
+       weston_output_finish_frame(&output->base, &now, 0);
+       return 0;
+}
 
 static void
 transmitter_start_repaint_loop(struct weston_output *base)
 {
-       struct timespec ts;
        struct weston_transmitter_output *output = wl_container_of(base, output, base);
-
-       weston_compositor_read_presentation_clock(output->base.compositor, &ts);
-       weston_output_finish_frame(&output->base, &ts, 0);
+       weston_output_finish_frame(&output->base,NULL, WP_PRESENTATION_FEEDBACK_INVALID);
 }
 
 static int
 transmitter_output_repaint(struct weston_output *base,
-                          pixman_region32_t *damage)
+                          pixman_region32_t *damage,void *repaint_data)
 {
        struct weston_transmitter_output* output = wl_container_of(base, output, base);
        struct weston_transmitter_remote* remote = output->remote;
@@ -222,19 +228,16 @@ transmitter_output_repaint(struct weston_output *base,
        if (!found_output)
                goto out;
 
-       weston_compositor_read_presentation_clock(output->base.compositor, &ts);
-       weston_output_finish_frame(&output->base, &ts, 0);
-
+       wl_event_source_timer_update(output->finish_frame_timer,1);
        return 0;
 
 out:
-       transmitter_start_repaint_loop(base);
-
+       wl_event_source_timer_update(output->finish_frame_timer,1);
        return 0;
 }
 
 static void
-transmitter_assign_planes(struct weston_output *base) {
+transmitter_assign_planes(struct weston_output *base,void *repaint_data) {
        /*
         * This function prevents compositor releasing buffer early.
         */
@@ -259,6 +262,7 @@ static int
 transmitter_output_enable(struct weston_output *base)
 {
        struct weston_transmitter_output *output = wl_container_of(base, output, base);
+       struct wl_event_loop *loop;
        if (!output) {
                weston_log("No weston output found\n");
                return -1;
@@ -268,6 +272,27 @@ transmitter_output_enable(struct weston_output *base)
        output->base.set_dpms = NULL;
        output->base.switch_mode = NULL;
 
+       loop = wl_display_get_event_loop(base->compositor->wl_display);
+       output->finish_frame_timer =
+                       wl_event_loop_add_timer(loop,
+                                               transmitter_output_finish_frame_handler,
+                                               output);
+       return 0;
+}
+
+/* FIXME:This is a dummy call we just return 0(success)*/
+int transmitter_output_attach_head(struct weston_output *output,
+                  struct weston_head *head)
+{
+       weston_log("%s is called\n",__func__);
+       return 0;
+}
+
+/* FIXME:This is a dummy call we just return 0(success)*/
+int transmitter_output_detach_head(struct weston_output *output,
+                  struct weston_head *head)
+{
+       weston_log("%s is called\n",__func__);
        return 0;
 }
 
@@ -277,7 +302,17 @@ transmitter_remote_create_output(struct weston_transmitter_remote *remote,
 {
        struct weston_transmitter_output *output;
        struct weston_transmitter *txr = remote->transmitter;
-       struct weston_output *def_output;
+       struct weston_head *head;
+       const char *make = strdup(WESTON_TRANSMITTER_OUTPUT_MAKE);
+       const char *model = make_model(remote, 1);
+       const char *serial_number = strdup("0");
+       const char *connector_name = make_model(remote, 1);
+
+       head=zalloc(sizeof *head);
+       if (!head){
+               weston_log("allocation failed for head\n");
+               return -1;
+       }
 
        output = zalloc(sizeof *output);
        if (!output)
@@ -285,36 +320,24 @@ transmitter_remote_create_output(struct weston_transmitter_remote *remote,
 
        output->parent.draw_initial_frame = true;
 
-       output->base.subpixel = info->subpixel;
+       weston_head_init(head,connector_name);
+       weston_head_set_subpixel(head, info->subpixel);
+       weston_head_set_monitor_strings(head, make, model, serial_number);
+
+       head->compositor=remote->transmitter->compositor;
 
-       output->base.name = make_model(remote, 1);
-       output->base.make = strdup(WESTON_TRANSMITTER_OUTPUT_MAKE);
-       output->base.model = make_model(remote, 1);
-       output->base.serial_number = strdup("0");
        /* x and y is fake value */
        wl_list_init(&output->base.mode_list);
+       output->base.name = make_model(remote, 1);
+       /* WL_OUTPUT_MODE_CURRENT already set */
+       weston_output_init(&output->base, remote->transmitter->compositor,output->base.name);
        if (make_mode_list(&output->base.mode_list, info) < 0)
                goto fail;
 
        output->base.current_mode = get_current_mode(&output->base.mode_list);
        output->base.height = output->base.current_mode->height;
        output->base.width = output->base.current_mode->width;
-       /* WL_OUTPUT_MODE_CURRENT already set */
-       weston_output_init(&output->base, remote->transmitter->compositor);
-
-       /*
-        * renderer_output_create skipped:
-        * no renderer awareness is needed for this output
-        */
 
-       /*
-        * weston_compositor_add_output() skipped:
-        * Most other code uses weston_compositor::output_list when traversing
-        * all outputs, we do not want any of that.
-        * Also weston_compositor::output_created_signal must not trigger
-        * for this output, since we must not involve input device management
-        * or color management or any kind of local management.
-        */
        output->base.enable = transmitter_output_enable;
        output->base.start_repaint_loop = transmitter_start_repaint_loop;
        output->base.repaint = transmitter_output_repaint;
@@ -330,6 +353,9 @@ transmitter_remote_create_output(struct weston_transmitter_remote *remote,
        output->base.scale = 1;
        output->base.transform = WL_OUTPUT_TRANSFORM_NORMAL;
 
+       output->base.attach_head = transmitter_output_attach_head;
+       output->base.detach_head = transmitter_output_detach_head;
+
        output->remote = remote;
        wl_list_insert(&remote->output_list, &output->link);
 
@@ -338,16 +364,19 @@ transmitter_remote_create_output(struct weston_transmitter_remote *remote,
                return -1;
        }
 
-       weston_output_enable(&output->base);
+       if(!weston_output_attach_head(&output->base,head)){
+               weston_log("Weston head attached successfully to output\n");
+       }
+
+       if(weston_output_enable(&output->base)<0){
+               weston_log("Failed to enable weston output\n");
+       }
 
        return 0;
 
 fail:
        free_mode_list(&output->base.mode_list);
-       free(output->base.serial_number);
-       free(output->base.model);
-       free(output->base.make);
-       free(output->base.name);
+       free(head);
        free(output);
 
        return -1;
index 92510c2..66c115f 100644 (file)
@@ -381,7 +381,7 @@ conn_ready_notify(struct wl_listener *l, void *data)
                WL_OUTPUT_TRANSFORM_NORMAL,
                1,
                0, 0,
-               300, 200,
+               1024,768,
                strdup(remote->model),
                {
                        WL_OUTPUT_MODE_CURRENT | WL_OUTPUT_MODE_PREFERRED,
@@ -394,6 +394,7 @@ conn_ready_notify(struct wl_listener *l, void *data)
                if(remote->height != 0) {
                        info.mode.width = remote->width;
                        info.mode.height = remote->height;
+                       info.mode.refresh= 60;
                }
        }
        /* Outputs and seats are dynamic, do not guarantee they are all
index 892ba7a..c824a6a 100644 (file)
@@ -198,7 +198,7 @@ struct weston_transmitter_output {
        struct wl_list link; /* weston_transmitter_remote::output_list */
 
        struct frame *frame;
-
+        struct wl_event_source *finish_frame_timer;
        struct wl_callback *frame_cb;
        struct renderer *renderer;
 };
index 768a7f0..17411b9 100644 (file)
@@ -38,7 +38,7 @@ set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "")
 
 set(LIBS
     m
-    weston-2
+    weston-6
     gstallocators-1.0
     gstvideo-1.0
     ${WAYLAND_SERVER_LIBRARIES}
@@ -55,5 +55,5 @@ target_link_libraries(${PROJECT_NAME} ${LIBS})
 
 install (
     TARGETS             ${PROJECT_NAME}
-    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/libweston-2
+    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/libweston-6
 )