diff --git a/include/x11/connection.hpp b/include/x11/connection.hpp index e554279c..9991041e 100644 --- a/include/x11/connection.hpp +++ b/include/x11/connection.hpp @@ -108,7 +108,8 @@ class connection : public detail::connection_base& dest); - xcb_screen_t* screen(bool realloc = false); + void reset_screen(); + xcb_screen_t* screen(); string id(xcb_window_t w) const; diff --git a/src/components/screen.cpp b/src/components/screen.cpp index fd5815d8..1f11da30 100644 --- a/src/components/screen.cpp +++ b/src/components/screen.cpp @@ -98,7 +98,8 @@ void screen::handle(const evt::randr_screen_change_notify& evt) { return; } - auto screen = m_connection.screen(true); + m_connection.reset_screen(); + auto screen = m_connection.screen(); auto changed = false; // We need to reload if the screen size changed as well diff --git a/src/x11/connection.cpp b/src/x11/connection.cpp index 80277604..55433805 100644 --- a/src/x11/connection.cpp +++ b/src/x11/connection.cpp @@ -79,13 +79,15 @@ string connection::id(xcb_window_t w) const { return sstream() << "0x" << std::hex << std::setw(7) << std::setfill('0') << w; } +void connection::reset_screen() { + m_screen = nullptr; +} + /** * Get pointer to the default xcb screen - * - * TODO remove realloc param. Create explicit realloc function */ -xcb_screen_t* connection::screen(bool realloc) { - if (m_screen == nullptr || realloc) { +xcb_screen_t* connection::screen() { + if (m_screen == nullptr) { m_screen = screen_of_display(default_screen()); } return m_screen;