Compare commits
5 Commits
a497e4267f
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| b2c642f03d | |||
| 654e878165 | |||
| 5076d3bbaf | |||
| 7be8edada7 | |||
| 07f2b5dbb7 |
@@ -1400,6 +1400,8 @@ BAN::ErrorOr<void> handle_packet(Client& client_info, BAN::ConstByteSpan packet)
|
||||
if (event_mask != 0)
|
||||
TRY(object_it->value->object.get<Object::Window>().event_masks.insert(&client_info, event_mask));
|
||||
|
||||
TRY(parent_window.children.push_back(request.wid));
|
||||
|
||||
if (gui_window_ptr)
|
||||
{
|
||||
const WINDOW wid = request.wid;
|
||||
|
||||
@@ -12,12 +12,7 @@ set(SOURCES
|
||||
)
|
||||
|
||||
option(ENABLE_GLX "enable glx extension" ON)
|
||||
|
||||
include(CheckSymbolExists)
|
||||
include(CMakeDependentOption)
|
||||
check_symbol_exists(shmat "sys/shm.h" HAVE_SHMAT)
|
||||
check_symbol_exists(shmdt "sys/shm.h" HAVE_SHMDT)
|
||||
cmake_dependent_option(ENABLE_SHM "enable shm extension" ON "HAVE_SHMAT;HAVE_SHMDT" OFF)
|
||||
option(ENABLE_SHM "enable shm extension" ON)
|
||||
|
||||
if(ENABLE_GLX)
|
||||
set(SOURCES ${SOURCES} ExtGLX.cpp)
|
||||
|
||||
@@ -1,63 +1,63 @@
|
||||
#include "Extensions.h"
|
||||
#include "Utils.h"
|
||||
|
||||
#include <GL/glx.h>
|
||||
#include <GL/glxproto.h>
|
||||
#include <GL/glxtokens.h>
|
||||
|
||||
using BOOL32 = CARD32;
|
||||
|
||||
CARD32 g_fb_configs[2][24][2] {
|
||||
{
|
||||
{ GLX_FBCONFIG_ID, 1 },
|
||||
{ GLX_VISUAL_ID, g_visual.visualID },
|
||||
{ GLX_BUFFER_SIZE, 32 },
|
||||
{ GLX_LEVEL, 0 },
|
||||
{ GLX_DOUBLEBUFFER, True },
|
||||
{ GLX_STEREO, False },
|
||||
{ GLX_RENDER_TYPE, GLX_RGBA_BIT },
|
||||
{ GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT },
|
||||
{ GLX_X_RENDERABLE, True },
|
||||
{ GLX_X_VISUAL_TYPE, GLX_TRUE_COLOR },
|
||||
{ GLX_CONFIG_CAVEAT, GLX_NONE },
|
||||
{ GLX_TRANSPARENT_TYPE, GLX_NONE },
|
||||
{ GLX_RED_SIZE, 8 },
|
||||
{ GLX_GREEN_SIZE, 8 },
|
||||
{ GLX_BLUE_SIZE, 8 },
|
||||
{ GLX_ALPHA_SIZE, 8 },
|
||||
{ GLX_DEPTH_SIZE, 24 },
|
||||
{ GLX_STENCIL_SIZE, 8 },
|
||||
{ GLX_ACCUM_RED_SIZE, 0 },
|
||||
{ GLX_ACCUM_GREEN_SIZE, 0 },
|
||||
{ GLX_ACCUM_BLUE_SIZE, 0 },
|
||||
{ GLX_ACCUM_ALPHA_SIZE, 0 },
|
||||
{ GLX_SAMPLE_BUFFERS, 0 },
|
||||
{ GLX_SAMPLES, 0 },
|
||||
{ GLX_FBCONFIG_ID, 1 },
|
||||
{ GLX_VISUAL_ID, g_visual.visualID },
|
||||
{ GLX_BUFFER_SIZE, 32 },
|
||||
{ GLX_LEVEL, 0 },
|
||||
{ GLX_DOUBLEBUFFER, xTrue },
|
||||
{ GLX_STEREO, xFalse },
|
||||
{ GLX_RENDER_TYPE, GLX_RGBA_BIT },
|
||||
{ GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT },
|
||||
{ GLX_X_RENDERABLE, xTrue },
|
||||
{ GLX_X_VISUAL_TYPE, GLX_TRUE_COLOR },
|
||||
{ GLX_CONFIG_CAVEAT, GLX_NONE },
|
||||
{ GLX_TRANSPARENT_TYPE, GLX_NONE },
|
||||
{ GLX_RED_SIZE, 8 },
|
||||
{ GLX_GREEN_SIZE, 8 },
|
||||
{ GLX_BLUE_SIZE, 8 },
|
||||
{ GLX_ALPHA_SIZE, 8 },
|
||||
{ GLX_DEPTH_SIZE, 24 },
|
||||
{ GLX_STENCIL_SIZE, 8 },
|
||||
{ GLX_ACCUM_RED_SIZE, 0 },
|
||||
{ GLX_ACCUM_GREEN_SIZE, 0 },
|
||||
{ GLX_ACCUM_BLUE_SIZE, 0 },
|
||||
{ GLX_ACCUM_ALPHA_SIZE, 0 },
|
||||
{ GLX_SAMPLE_BUFFERS_SGIS, 0 },
|
||||
{ GLX_SAMPLES_SGIS, 0 },
|
||||
},
|
||||
{
|
||||
{ GLX_FBCONFIG_ID, 2 },
|
||||
{ GLX_VISUAL_ID, g_visual.visualID },
|
||||
{ GLX_BUFFER_SIZE, 32 },
|
||||
{ GLX_LEVEL, 0 },
|
||||
{ GLX_DOUBLEBUFFER, False },
|
||||
{ GLX_STEREO, False },
|
||||
{ GLX_RENDER_TYPE, GLX_RGBA_BIT },
|
||||
{ GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT },
|
||||
{ GLX_X_RENDERABLE, True },
|
||||
{ GLX_X_VISUAL_TYPE, GLX_TRUE_COLOR },
|
||||
{ GLX_CONFIG_CAVEAT, GLX_NONE },
|
||||
{ GLX_TRANSPARENT_TYPE, GLX_NONE },
|
||||
{ GLX_RED_SIZE, 8 },
|
||||
{ GLX_GREEN_SIZE, 8 },
|
||||
{ GLX_BLUE_SIZE, 8 },
|
||||
{ GLX_ALPHA_SIZE, 8 },
|
||||
{ GLX_DEPTH_SIZE, 24 },
|
||||
{ GLX_STENCIL_SIZE, 8 },
|
||||
{ GLX_ACCUM_RED_SIZE, 0 },
|
||||
{ GLX_ACCUM_GREEN_SIZE, 0 },
|
||||
{ GLX_ACCUM_BLUE_SIZE, 0 },
|
||||
{ GLX_ACCUM_ALPHA_SIZE, 0 },
|
||||
{ GLX_SAMPLE_BUFFERS, 0 },
|
||||
{ GLX_SAMPLES, 0 },
|
||||
{ GLX_FBCONFIG_ID, 2 },
|
||||
{ GLX_VISUAL_ID, g_visual.visualID },
|
||||
{ GLX_BUFFER_SIZE, 32 },
|
||||
{ GLX_LEVEL, 0 },
|
||||
{ GLX_DOUBLEBUFFER, xFalse },
|
||||
{ GLX_STEREO, xFalse },
|
||||
{ GLX_RENDER_TYPE, GLX_RGBA_BIT },
|
||||
{ GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT },
|
||||
{ GLX_X_RENDERABLE, xTrue },
|
||||
{ GLX_X_VISUAL_TYPE, GLX_TRUE_COLOR },
|
||||
{ GLX_CONFIG_CAVEAT, GLX_NONE },
|
||||
{ GLX_TRANSPARENT_TYPE, GLX_NONE },
|
||||
{ GLX_RED_SIZE, 8 },
|
||||
{ GLX_GREEN_SIZE, 8 },
|
||||
{ GLX_BLUE_SIZE, 8 },
|
||||
{ GLX_ALPHA_SIZE, 8 },
|
||||
{ GLX_DEPTH_SIZE, 24 },
|
||||
{ GLX_STENCIL_SIZE, 8 },
|
||||
{ GLX_ACCUM_RED_SIZE, 0 },
|
||||
{ GLX_ACCUM_GREEN_SIZE, 0 },
|
||||
{ GLX_ACCUM_BLUE_SIZE, 0 },
|
||||
{ GLX_ACCUM_ALPHA_SIZE, 0 },
|
||||
{ GLX_SAMPLE_BUFFERS_SGIS, 0 },
|
||||
{ GLX_SAMPLES_SGIS, 0 },
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include <signal.h>
|
||||
#include <sys/epoll.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
|
||||
@@ -18,19 +19,20 @@
|
||||
#include <netinet/in.h>
|
||||
#endif
|
||||
|
||||
static const xRectangle s_screen_bounds =
|
||||
static BAN::UniqPtr<LibGUI::Window> s_dummy_window =
|
||||
[]() {
|
||||
auto attributes = LibGUI::Window::default_attributes;
|
||||
attributes.shown = false;
|
||||
auto window = MUST(LibGUI::Window::create(0, 0, ""_sv, attributes));
|
||||
return xRectangle {
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
.width = static_cast<CARD16>(window->width()),
|
||||
.height = static_cast<CARD16>(window->height()),
|
||||
};
|
||||
return MUST(LibGUI::Window::create(0, 0, ""_sv, attributes));
|
||||
}();
|
||||
|
||||
static const xRectangle s_screen_bounds = {
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
.width = static_cast<CARD16>(s_dummy_window->width()),
|
||||
.height = static_cast<CARD16>(s_dummy_window->height()),
|
||||
};
|
||||
|
||||
const xPixmapFormat g_formats[6] {
|
||||
{
|
||||
.depth = 1,
|
||||
@@ -172,11 +174,24 @@ int main()
|
||||
return 1;
|
||||
}
|
||||
|
||||
epoll_event event { .events = EPOLLIN, .data = { .ptr = nullptr } };
|
||||
if (epoll_ctl(g_epoll_fd, EPOLL_CTL_ADD, server_sock, &event) == -1)
|
||||
{
|
||||
perror("xbanan: epoll_ctl");
|
||||
return 1;
|
||||
epoll_event event { .events = EPOLLIN, .data = { .ptr = nullptr } };
|
||||
if (epoll_ctl(g_epoll_fd, EPOLL_CTL_ADD, server_sock, &event) == -1)
|
||||
{
|
||||
perror("xbanan: epoll_ctl");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
epoll_event event { .events = EPOLLIN, .data = { .ptr = (void*)1 } };
|
||||
if (epoll_ctl(g_epoll_fd, EPOLL_CTL_ADD, s_dummy_window->server_fd(), &event) == -1)
|
||||
{
|
||||
perror("xbanan: epoll_ctl");
|
||||
return 1;
|
||||
}
|
||||
|
||||
s_dummy_window->request_resize(1, 1);
|
||||
}
|
||||
|
||||
#define APPEND_ATOM(name) do { \
|
||||
@@ -397,6 +412,12 @@ int main()
|
||||
continue;
|
||||
}
|
||||
|
||||
if (events[i].data.ptr == (void*)1)
|
||||
{
|
||||
s_dummy_window->poll_events();
|
||||
continue;
|
||||
}
|
||||
|
||||
auto it = g_epoll_thingies.find(events[i].data.fd);
|
||||
if (it == g_epoll_thingies.end())
|
||||
continue;
|
||||
|
||||
Reference in New Issue
Block a user