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