diff options
Diffstat (limited to 'src/platform')
-rw-r--r-- | src/platform/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/platform/gui/xcb/CMakeLists.txt | 8 | ||||
-rw-r--r-- | src/platform/gui/xcb/UiApplication.cpp | 20 | ||||
-rw-r--r-- | src/platform/gui/xcb/Window.cpp | 1 |
4 files changed, 30 insertions, 0 deletions
diff --git a/src/platform/CMakeLists.txt b/src/platform/CMakeLists.txt index 3044df08..63ef9058 100644 --- a/src/platform/CMakeLists.txt +++ b/src/platform/CMakeLists.txt @@ -26,6 +26,7 @@ elseif (EMSCRIPTEN) add_subdirectory(graphics/web_canvas) elseif (UNIX) add_subdirectory(graphics/cairo) + add_subdirectory(gui/xcb) endif() add_subdirectory(bootstrap) diff --git a/src/platform/gui/xcb/CMakeLists.txt b/src/platform/gui/xcb/CMakeLists.txt new file mode 100644 index 00000000..2ef675a3 --- /dev/null +++ b/src/platform/gui/xcb/CMakeLists.txt @@ -0,0 +1,8 @@ +find_library(LIBRARY_CAIRO cairo REQUIRED) +find_library(LIBRARY_XCB xcb REQUIRED) +add_library(CruPlatformGuiX11 + UiApplication.cpp + Window.cpp +) +target_link_libraries(CruPlatformGuiX11 PUBLIC CruPlatformGui ${LIBRARY_XCB} ${LIBRARY_CAIRO}) + diff --git a/src/platform/gui/xcb/UiApplication.cpp b/src/platform/gui/xcb/UiApplication.cpp new file mode 100644 index 00000000..baa36abe --- /dev/null +++ b/src/platform/gui/xcb/UiApplication.cpp @@ -0,0 +1,20 @@ +#include <cru/platform/gui/xcb/UiApplication.h> +#include <xcb/xcb.h> + +namespace cru::platform::gui::xcb { +XcbUiApplication::XcbUiApplication() { + int screen_num; + xcb_connection_t *connection = xcb_connect(NULL, &screen_num); + this->CheckXcbConnectionError(); + const xcb_setup_t *setup = xcb_get_setup(connection); + xcb_screen_iterator_t iter = xcb_setup_roots_iterator(setup); + xcb_screen_t *screen = iter.data; +} + +XcbUiApplication::~XcbUiApplication() { xcb_disconnect(this->xcb_); } + +void XcbUiApplication::CheckXcbConnectionError() { +if (xcb_connection_has_error(this->xcb_)) { + throw XcbException(); +}} +} // namespace cru::platform::gui::xcb diff --git a/src/platform/gui/xcb/Window.cpp b/src/platform/gui/xcb/Window.cpp new file mode 100644 index 00000000..92772acf --- /dev/null +++ b/src/platform/gui/xcb/Window.cpp @@ -0,0 +1 @@ +#include <cru/platform/gui/xcb/Window.h> |