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 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 * 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 42 wl_egl_window_destroy(struct wl_egl_window *egl_window) 43 { 44 free(egl_window); 45 } 46 47 WL_EGL_EXPORT void 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