1 #ifndef _TCUWAYLAND_HPP
2 #define _TCUWAYLAND_HPP
3 /*-------------------------------------------------------------------------
4 * drawElements Quality Program Tester Core
5 * ----------------------------------------
7 * Copyright (c) 2014 The Android Open Source Project
8 * Copyright (c) 2016 The Khronos Group Inc.
9 * Copyright (c) 2016 Mun Gwan-gyeong <elongbug@gmail.com>
11 * Licensed under the Apache License, Version 2.0 (the "License");
12 * you may not use this file except in compliance with the License.
13 * You may obtain a copy of the License at
15 * http://www.apache.org/licenses/LICENSE-2.0
17 * Unless required by applicable law or agreed to in writing, software
18 * distributed under the License is distributed on an "AS IS" BASIS,
19 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 * See the License for the specific language governing permissions and
21 * limitations under the License.
25 * \brief wayland utilities.
26 *//*--------------------------------------------------------------------*/
28 #include "tcuDefs.hpp"
29 #include "gluRenderConfig.hpp"
30 #include "gluPlatform.hpp"
31 #include "deMutex.hpp"
33 #include <wayland-client.h>
34 #include <wayland-egl.h>
43 DEFAULT_WINDOW_WIDTH = 400,
44 DEFAULT_WINDOW_HEIGHT = 300
51 virtual ~EventState (void);
53 void setQuitFlag (bool quit);
54 bool getQuitFlag (void);
61 EventState (const EventState&);
62 EventState& operator= (const EventState&);
68 Display (EventState& platform, const char* name);
69 virtual ~Display (void);
71 struct wl_display* getDisplay (void) { return m_display; }
72 struct wl_compositor* getCompositor (void) { return m_compositor; }
73 struct wl_shell* getShell (void) { return m_shell; }
75 void processEvents (void);
78 EventState& m_eventState;
79 struct wl_display* m_display;
80 struct wl_registry* m_registry;
81 struct wl_compositor* m_compositor;
82 struct wl_shell* m_shell;
85 Display (const Display&);
86 Display& operator= (const Display&);
88 static const struct wl_registry_listener s_registryListener;
90 static void handleGlobal (void* data, struct wl_registry* registry, uint32_t id, const char* interface, uint32_t version);
91 static void handleGlobalRemove (void* data, struct wl_registry* registry, uint32_t name);
97 Window (Display& display, int width, int height);
100 void setVisibility (bool visible);
102 void processEvents (void);
103 Display& getDisplay (void) { return m_display; }
104 void* getSurface (void) { return m_surface; }
105 void* getWindow (void) { return m_window; }
107 void getDimensions (int* width, int* height) const;
108 void setDimensions (int width, int height);
113 struct wl_egl_window* m_window;
114 struct wl_surface* m_surface;
115 struct wl_shell_surface* m_shellSurface;
119 Window (const Window&);
120 Window& operator= (const Window&);
122 static const struct wl_shell_surface_listener s_shellSurfaceListener;
124 static void handlePing (void* data, struct wl_shell_surface* shellSurface, uint32_t serial);
125 static void handleConfigure (void* data, struct wl_shell_surface* shellSurface, uint32_t edges, int32_t width, int32_t height);
126 static void handlePopupDone (void* data, struct wl_shell_surface* shellSurface);
132 #endif // _TCUWAYLAND_HPP