Hook up axis events.
[profile/ivi/weston.git] / src / compositor-wayland.c
index 386f9b6..0f4d4ad 100644 (file)
@@ -206,16 +206,17 @@ draw_border(struct wayland_output *output)
 static void
 create_border(struct wayland_compositor *c)
 {
-       uint32_t *pixels, stride;
+       pixman_image_t *image;
 
-       pixels = weston_load_image(DATADIR "/weston/border.png",
-                                  &c->border.width,
-                                  &c->border.height, &stride);
-       if (!pixels) {
+       image = load_image(DATADIR "/weston/border.png");
+       if (!image) {
                fprintf(stderr, "could'nt load border image\n");
                return;
        }
 
+       c->border.width = pixman_image_get_width(image);
+       c->border.height = pixman_image_get_height(image);
+
        glGenTextures(1, &c->border.texture);
        glBindTexture(GL_TEXTURE_2D, c->border.texture);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
@@ -226,12 +227,15 @@ create_border(struct wayland_compositor *c)
        glTexImage2D(GL_TEXTURE_2D, 0, GL_BGRA_EXT,
                     c->border.width,
                     c->border.height,
-                    0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, pixels);
+                    0, GL_BGRA_EXT, GL_UNSIGNED_BYTE,
+                    pixman_image_get_data(image));
 
        c->border.top = 25;
        c->border.bottom = 50;
        c->border.left = 25;
        c->border.right = 25;
+
+       pixman_image_unref(image);
 }
 
 static int
@@ -263,7 +267,6 @@ wayland_compositor_init_egl(struct wayland_compositor *c)
                EGL_GREEN_SIZE, 1,
                EGL_BLUE_SIZE, 1,
                EGL_ALPHA_SIZE, 1,
-               EGL_DEPTH_SIZE, 1,
                EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
                EGL_NONE
        };
@@ -329,7 +332,8 @@ static const struct wl_callback_listener frame_listener = {
 };
 
 static void
-wayland_output_repaint(struct weston_output *output_base)
+wayland_output_repaint(struct weston_output *output_base,
+                      pixman_region32_t *damage)
 {
        struct wayland_output *output = (struct wayland_output *) output_base;
        struct wayland_compositor *compositor =
@@ -344,7 +348,7 @@ wayland_output_repaint(struct weston_output *output_base)
        }
 
        wl_list_for_each_reverse(surface, &compositor->base.surface_list, link)
-               weston_surface_draw(surface, &output->base);
+               weston_surface_draw(surface, &output->base, damage);
 
        draw_border(output);
 
@@ -355,13 +359,6 @@ wayland_output_repaint(struct weston_output *output_base)
        return;
 }
 
-static int
-wayland_output_set_cursor(struct weston_output *output_base,
-                         struct weston_input_device *input)
-{
-       return -1;
-}
-
 static void
 wayland_output_destroy(struct weston_output *output_base)
 {
@@ -440,8 +437,10 @@ wayland_compositor_create_output(struct wayland_compositor *c,
        wl_shell_surface_set_toplevel(output->parent.shell_surface);
 
        output->base.repaint = wayland_output_repaint;
-       output->base.set_hardware_cursor = wayland_output_set_cursor;
        output->base.destroy = wayland_output_destroy;
+       output->base.assign_planes = NULL;
+       output->base.set_backlight = NULL;
+       output->base.set_dpms = NULL;
 
        wl_list_insert(c->base.output_list.prev, &output->base.link);
 
@@ -521,6 +520,16 @@ input_handle_button(void *data,
 }
 
 static void
+input_handle_axis(void *data, struct wl_input_device *input_device,
+                       uint32_t time, uint32_t axis, int32_t value)
+{
+       struct wayland_input *input = data;
+       struct wayland_compositor *c = input->compositor;
+
+       notify_axis(c->base.input_device, time, axis, value);
+}
+
+static void
 input_handle_key(void *data, struct wl_input_device *input_device,
                  uint32_t time, uint32_t key, uint32_t state)
 {
@@ -587,6 +596,7 @@ input_handle_keyboard_leave(void *data,
 static const struct wl_input_device_listener input_device_listener = {
        input_handle_motion,
        input_handle_button,
+       input_handle_axis,
        input_handle_key,
        input_handle_pointer_enter,
        input_handle_pointer_leave,
@@ -725,31 +735,20 @@ wayland_compositor_create(struct wl_display *display,
        return &c->base;
 }
 
-struct weston_compositor *
-backend_init(struct wl_display *display, char *options);
-
 WL_EXPORT struct weston_compositor *
-backend_init(struct wl_display *display, char *options)
+backend_init(struct wl_display *display, int argc, char *argv[])
 {
-       int width = 1024, height = 640, i;
-       char *p, *value, *display_name = NULL;
-
-       static char * const tokens[] = { "width", "height", "display", NULL };
-       
-       p = options;
-       while (i = getsubopt(&p, tokens, &value), i != -1) {
-               switch (i) {
-               case 0:
-                       width = strtol(value, NULL, 0);
-                       break;
-               case 1:
-                       height = strtol(value, NULL, 0);
-                       break;
-               case 2:
-                       display_name = strdup(value);
-                       break;
-               }
-       }
+       int width = 1024, height = 640;
+       char *display_name = NULL;
+
+       const struct weston_option wayland_options[] = {
+               { WESTON_OPTION_INTEGER, "width", 0, &width },
+               { WESTON_OPTION_INTEGER, "height", 0, &height },
+               { WESTON_OPTION_STRING, "display", 0, &display_name },
+       };
+
+       parse_options(wayland_options,
+                     ARRAY_LENGTH(wayland_options), argc, argv);
 
        return wayland_compositor_create(display, width, height, display_name);
 }