• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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