| 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, NULL); |
| 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->resize_callback = NULL; |
| 33 | wl_egl_window_resize(egl_window, width, height, 0, 0); |
| 34 | egl_window->attached_width = 0; |
| 35 | egl_window->attached_height = 0; |
| 36 | egl_window->nativewindow = 0; |
| 37 | |
| 38 | return egl_window; |
| 39 | |
| 40 | } |
| 41 | |
| 42 | WL_EGL_EXPORT void |
| 43 | wl_egl_window_destroy(struct wl_egl_window *egl_window) |
| 44 | { |
| 45 | free(egl_window); |
| 46 | } |
| 47 | |
| 48 | WL_EGL_EXPORT void |
| 49 | wl_egl_window_get_attached_size(struct wl_egl_window *egl_window, |
| 50 | int *width, int *height) |
| 51 | { |
| 52 | if (width) |
| 53 | *width = egl_window->attached_width; |
| 54 | if (height) |
| 55 | *height = egl_window->attached_height; |
| 56 | } |
| 57 | |