1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <stdlib.h>
2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <wayland-client.h>
4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "wayland-egl.h"
5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "wayland-egl-priv.h"
6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgWL_EGL_EXPORT void
8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgwl_egl_window_resize(struct wl_egl_window *egl_window,
9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org		     int width, int height,
10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org		     int dx, int dy)
11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{
12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	egl_window->width  = width;
13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	egl_window->height = height;
14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	egl_window->dx     = dx;
15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	egl_window->dy     = dy;
16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	if (egl_window->resize_callback)
18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org		egl_window->resize_callback(egl_window, egl_window->private);
19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgWL_EGL_EXPORT struct wl_egl_window *
22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgwl_egl_window_create(struct wl_surface *surface,
23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org		     int width, int height)
24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{
25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	struct wl_egl_window *egl_window;
26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	egl_window = malloc(sizeof *egl_window);
28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	if (!egl_window)
29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org		return NULL;
30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	egl_window->surface = surface;
32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	egl_window->private = NULL;
33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	egl_window->resize_callback = NULL;
34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	wl_egl_window_resize(egl_window, width, height, 0, 0);
35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	egl_window->attached_width  = 0;
36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	egl_window->attached_height = 0;
37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	return egl_window;
39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgWL_EGL_EXPORT void
42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgwl_egl_window_destroy(struct wl_egl_window *egl_window)
43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{
44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	free(egl_window);
45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgWL_EGL_EXPORT void
48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgwl_egl_window_get_attached_size(struct wl_egl_window *egl_window,
49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org				int *width, int *height)
50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{
51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	if (width)
52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org		*width = egl_window->attached_width;
53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	if (height)
54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org		*height = egl_window->attached_height;
55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
56