summaryrefslogtreecommitdiffstats
path: root/tests/auto/client/mockcompositor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/client/mockcompositor.cpp')
-rw-r--r--tests/auto/client/mockcompositor.cpp30
1 files changed, 18 insertions, 12 deletions
diff --git a/tests/auto/client/mockcompositor.cpp b/tests/auto/client/mockcompositor.cpp
index d25f90565..e51f3ed57 100644
--- a/tests/auto/client/mockcompositor.cpp
+++ b/tests/auto/client/mockcompositor.cpp
@@ -40,8 +40,10 @@
****************************************************************************/
#include "mockcompositor.h"
+#include "mockinput.h"
#include "mocksurface.h"
+#include <stdio.h>
MockCompositor::MockCompositor()
: m_alive(true)
, m_ready(false)
@@ -195,34 +197,34 @@ Compositor::Compositor()
{
wl_list_init(&m_outputResources);
- wl_display_add_socket(m_display, 0);
-
- wl_seat_init(&m_seat);
- wl_pointer_init(&m_pointer);
- wl_seat_set_pointer(&m_seat, &m_pointer);
- wl_keyboard_init(&m_keyboard);
- wl_seat_set_keyboard(&m_seat, &m_keyboard);
+ if (wl_display_add_socket(m_display, 0)) {
+ fprintf(stderr, "Fatal: Failed to open server socket\n");
+ exit(EXIT_FAILURE);
+ }
wl_display_add_global(m_display, &wl_compositor_interface, this, bindCompositor);
- wl_display_add_global(m_display, &wl_seat_interface, this, bindSeat);
- wl_display_add_global(m_display, &wl_output_interface, this, bindOutput);
- wl_display_add_global(m_display, &wl_shell_interface, this, bindShell);
wl_display_init_shm(m_display);
+ m_seat.reset(new Seat(this, m_display));
+ m_pointer = m_seat->pointer();
+ m_keyboard = m_seat->keyboard();
+
+ wl_display_add_global(m_display, &wl_output_interface, this, bindOutput);
+ wl_display_add_global(m_display, &wl_shell_interface, this, bindShell);
+
m_loop = wl_display_get_event_loop(m_display);
m_fd = wl_event_loop_get_fd(m_loop);
}
Compositor::~Compositor()
{
- wl_pointer_release(&m_pointer);
- wl_keyboard_release(&m_keyboard);
wl_display_destroy(m_display);
}
void Compositor::dispatchEvents(int timeout)
{
+ wl_display_flush_clients(m_display);
wl_event_loop_dispatch(m_loop, timeout);
}
@@ -285,6 +287,10 @@ void Compositor::addSurface(Surface *surface)
void Compositor::removeSurface(Surface *surface)
{
m_surfaces.remove(m_surfaces.indexOf(surface));
+ if (m_keyboard->focus() == surface)
+ m_keyboard->setFocus(0);
+ if (m_pointer->focus() == surface)
+ m_pointer->setFocus(0, QPoint());
}
}