Let's start with minimal APIs. Just create a compositor and run.
APIs for output, client, input and surfaces will be added later.
Moved typedefs into internal header which should not be exposed to the user
at the moment.
Change-Id: I8f08ca00a2305d79b2278bf3a5a9ffaa61cc596d
#include "pepper_internal.h"
-
-pepper_surface_t *
-pepper_client_get_surface(pepper_client_t *client, int index)
-{
- /* TODO:*/
- return NULL;
-}
pepper_free(compositor);
}
-pepper_output_t *
-pepper_compositor_add_output(pepper_compositor_t *compositor,
- pepper_output_info_t *info)
-{
- pepper_output_t *output = NULL;
-
- output = (pepper_output_t *)pepper_calloc(1, sizeof (pepper_output_t));
-
- if (!output)
- return NULL;
-
- /* TODO: Backend-side output initialization. */
-
- output->x = info->x;
- output->y = info->y;
- output->w = info->w;
- output->h = info->h;
-
- /* TODO: Add to compositor's output list. */
-
- return output;
-}
-
-pepper_client_t *
-pepper_compositor_get_client(pepper_compositor_t *compositor, int index)
-{
- /* TODO: */
- return NULL;
-}
-
-int
-pepper_compositor_get_output_count(pepper_compositor_t *compositor)
-{
- /* TODO: */
- return 0;
-}
-
-pepper_output_t *
-pepper_compositor_get_output(pepper_compositor_t *compositor, int index)
-{
- /* TODO: */
- return NULL;
-}
-
void
-pepper_compositor_frame(pepper_compositor_t *compositor)
+pepper_compositor_run(pepper_compositor_t *compositor)
{
- if (compositor)
- {
- wl_display_flush_clients(compositor->display);
- wl_event_loop_dispatch(wl_display_get_event_loop(compositor->display), -1);
- }
+ wl_display_run(compositor->display);
}
#include "pepper_internal.h"
-
-pepper_bool_t
-pepper_output_move(pepper_output_t *output, int x, int y, int w, int h)
-{
- /* TODO: */
- return PEPPER_FALSE;
-}
-
-void
-pepper_output_get_geometry(pepper_output_t *output, int *x, int *y, int *w, int *h)
-{
- if (x)
- *x = output->x;
-
- if (y)
- *y = output->y;
-
- if (w)
- *w = output->w;
-
- if (h)
- *h = output->h;
-}
-
-pepper_compositor_t *
-pepper_output_get_compositor(pepper_output_t *output)
-{
- return output->compositor;
-}
-
-pepper_bool_t
-pepper_output_destroy(pepper_output_t *output)
-{
- /* TODO: */
- return PEPPER_FALSE;
-}
#define PEPPER_TRUE 1
typedef uint32_t pepper_bool_t;
-
typedef struct pepper_compositor pepper_compositor_t;
-typedef struct pepper_output pepper_output_t;
-typedef struct pepper_output_info pepper_output_info_t;
-typedef struct pepper_client pepper_client_t;
-typedef struct pepper_surface pepper_surface_t;
-typedef struct pepper_shell_surface pepper_shell_surface_t;
-
-typedef struct pepper_seat pepper_seat_t;
-typedef struct pepper_pointer pepper_pointer_t;
-typedef struct pepper_keyboard pepper_keyboard_t;
-typedef struct pepper_touch pepper_touch_t;
-
-struct pepper_output_info
-{
- int x, y, w, h;
- void *data;
-};
/* Compositor functions. */
pepper_compositor_t *
void
pepper_compositor_destroy(pepper_compositor_t *compositor);
-pepper_output_t *
-pepper_compositor_add_output(pepper_compositor_t *compositor,
- pepper_output_info_t *info);
-
-int
-pepper_compositor_get_output_count(pepper_compositor_t *compositor);
-
-pepper_output_t *
-pepper_compositor_get_output(pepper_compositor_t *compositor, int index);
-
-pepper_client_t *
-pepper_compositor_get_client(pepper_compositor_t *compositor, int index);
-
void
-pepper_compositor_frame(pepper_compositor_t *compositor);
-
-/* Output functions. */
-pepper_bool_t
-pepper_output_move(pepper_output_t *output, int x, int y, int w, int h);
-
-void
-pepper_output_get_geometry(pepper_output_t *output, int *x, int *y, int *w, int *h);
-
-pepper_compositor_t *
-pepper_output_get_compositor(pepper_output_t *output);
-
-pepper_bool_t
-pepper_output_destroy(pepper_output_t *output);
-
-/* Client functions. */
-pepper_surface_t *
-pepper_client_get_surface(pepper_client_t *client, int index);
-
-/* Surface functions. */
-void *
-pepper_surface_get_buffer(pepper_surface_t *surface);
+pepper_compositor_run(pepper_compositor_t *compositor);
#endif /* PEPPER_H */
#include "pepper.h"
#include <wayland-server.h>
+typedef struct pepper_surface pepper_surface_t;
+typedef struct pepper_shell_surface pepper_shell_surface_t;
+typedef struct pepper_seat pepper_seat_t;
+typedef struct pepper_pointer pepper_pointer_t;
+typedef struct pepper_keyboard pepper_keyboard_t;
+typedef struct pepper_touch pepper_touch_t;
+
/* input */
enum pepper_input_event_type
{
/* TODO: */
};
-
/* compositor */
struct pepper_compositor
{
pepper_seat_t *seat;
};
-struct pepper_output
-{
- pepper_compositor_t *compositor;
-
- int x;
- int y;
- int w;
- int h;
-};
-
-struct pepper_client
-{
- pepper_compositor_t *compositor;
-};
-
struct pepper_surface
{
struct wl_resource *resource;
struct wl_resource *resource;
pepper_surface_t *surface;
};
+
#endif /* PEPPER_INTERNAL_H */
compositor = pepper_compositor_create("wayland-0", NULL, NULL, NULL, NULL);
- while (1)
- {
- pepper_compositor_frame(compositor);
- }
+ /* Enter main loop. */
+ pepper_compositor_run(compositor);
pepper_compositor_destroy(compositor);