ilmNotifyTests: another set of fixes for notify callbacks
[profile/ivi/wayland-ivi-extension.git] / ivi-layermanagement-api / test / TestBase.cpp
1 #include "TestBase.h"
2 #include <cstring>
3 #include <stdexcept>
4
5 void registry_listener_callback(void* data, struct wl_registry* registry, uint32_t id, const char* interface, uint32_t version)
6 {
7     if (0 == strcmp(interface, "wl_compositor"))
8     {
9         wl_compositor** compositor = reinterpret_cast<wl_compositor**>(data);
10         *compositor = reinterpret_cast<wl_compositor*>(wl_registry_bind(registry, id, &wl_compositor_interface, 1));
11     }
12 }
13
14 TestBase::TestBase()
15 : wlDisplay(NULL)
16 , wlRegistry(NULL)
17 {
18     wlDisplay = wl_display_connect(NULL);
19     if (!wlDisplay)
20     {
21         throw std::runtime_error("could not connect to wayland display");
22     }
23     wlRegistry = wl_display_get_registry(wlDisplay);
24
25     static const struct wl_registry_listener registry_listener = {
26         registry_listener_callback,
27         NULL
28     };
29
30     wl_registry_add_listener(wlRegistry, &registry_listener, &wlCompositor);
31     wl_display_dispatch(wlDisplay);
32     wl_display_roundtrip(wlDisplay);
33
34     wlSurfaces.reserve(10);
35     for (int i = 0; i < wlSurfaces.capacity(); ++i)
36     {
37         wlSurfaces.push_back(wl_compositor_create_surface(wlCompositor));
38     }
39 }
40
41 TestBase::~TestBase()
42 {
43     for (std::vector<wl_surface *>::reverse_iterator it = wlSurfaces.rbegin();
44          it != wlSurfaces.rend();
45          ++it)
46     {
47         wl_surface_destroy(*it);
48     }
49     wlSurfaces.clear();
50     wl_compositor_destroy(wlCompositor);
51     wl_registry_destroy(wlRegistry);
52     wl_display_disconnect(wlDisplay);
53 }
54