ShellSurface::ShellSurface(const Shell& shell, const Surface& surface) : shell_(shell) , surface_(surface) , wl_shell_surface_( wl_shell_get_shell_surface(shell, surface)) { ASSERT(wl_shell_surface_ != NULL); wl_shell_surface_set_user_data(*this, this); static const wl_shell_surface_listener listener = { ping, configure, popupDone}; wl_shell_surface_add_listener(*this, &listener, this); wl_shell_surface_set_toplevel(*this); shell.display().roundtrip(); }