diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-03-17 19:03:15 +0100 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-03-17 19:03:15 +0100 |
| commit | ab7d727532cb409c980bb849507984d634611235 (patch) | |
| tree | d1604fbeaa355afc5dc323a193a302e3dda7fc69 /src/events/Events.cpp | |
| parent | 6e1819b3dc74b7fa89a271dca338a10f638c105f (diff) | |
render-ready
Diffstat (limited to 'src/events/Events.cpp')
| -rw-r--r-- | src/events/Events.cpp | 57 |
1 files changed, 39 insertions, 18 deletions
diff --git a/src/events/Events.cpp b/src/events/Events.cpp index 34cd961e..072e8519 100644 --- a/src/events/Events.cpp +++ b/src/events/Events.cpp @@ -16,13 +16,13 @@ void Events::listener_change(wl_listener* listener, void* data) { const auto CONFIGHEAD = wlr_output_configuration_head_v1_create(CONFIG, m.output); // TODO: clients off of disabled + wlr_box BOX; + wlr_output_layout_get_box(g_pCompositor->m_sWLROutputLayout, m.output, &BOX); - const auto BOX = wlr_output_layout_get_box(g_pCompositor->m_sWLROutputLayout, m.output); - - m.vecSize.x = BOX->width; - m.vecSize.y = BOX->height; - m.vecPosition.x = BOX->x; - m.vecPosition.y = BOX->y; + m.vecSize.x = BOX.width; + m.vecSize.y = BOX.height; + m.vecPosition.x = BOX.x; + m.vecPosition.y = BOX.y; CONFIGHEAD->state.enabled = m.output->enabled; CONFIGHEAD->state.mode = m.output->current_mode; @@ -77,22 +77,24 @@ void Events::listener_newOutput(wl_listener* listener, void* data) { void Events::listener_monitorFrame(wl_listener* listener, void* data) { SMonitor* const PMONITOR = wl_container_of(listener, PMONITOR, listen_monitorFrame); - const auto TIMENOWNS = std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::high_resolution_clock::now().time_since_epoch()).count(); + timespec now; + clock_gettime(CLOCK_MONOTONIC, &now); const float bgcol[4] = {0.1f,0.1f,0.1f,1.f}; + const float rectcol[4] = {0.69f,0.1f,0.69f,1.f}; - while (!wlr_output_commit(PMONITOR->output)) { - if (!wlr_output_attach_render(PMONITOR->output, nullptr)) - return; + if (!wlr_output_attach_render(PMONITOR->output, nullptr)) + return; - wlr_renderer_begin(g_pCompositor->m_sWLRRenderer, PMONITOR->vecSize.x, PMONITOR->vecSize.y); - wlr_renderer_clear(g_pCompositor->m_sWLRRenderer, bgcol); + wlr_renderer_begin(g_pCompositor->m_sWLRRenderer, PMONITOR->vecSize.x, PMONITOR->vecSize.y); + wlr_renderer_clear(g_pCompositor->m_sWLRRenderer, bgcol); - // TODO: render clients + // TODO: render clients - wlr_output_render_software_cursors(PMONITOR->output, NULL); + wlr_output_render_software_cursors(PMONITOR->output, NULL); - wlr_renderer_end(g_pCompositor->m_sWLRRenderer); - } + wlr_renderer_end(g_pCompositor->m_sWLRRenderer); + + wlr_output_commit(PMONITOR->output); } void Events::listener_monitorDestroy(wl_listener* listener, void* data) { @@ -159,7 +161,7 @@ void Events::listener_mouseButton(wl_listener* listener, void* data) { } void Events::listener_mouseFrame(wl_listener* listener, void* data) { - + wlr_seat_pointer_notify_frame(g_pCompositor->m_sWLRSeat); } void Events::listener_mouseMove(wl_listener* listener, void* data) { @@ -167,11 +169,30 @@ void Events::listener_mouseMove(wl_listener* listener, void* data) { } void Events::listener_mouseMoveAbsolute(wl_listener* listener, void* data) { - + g_pInputManager->onMouseWarp((wlr_event_pointer_motion_absolute*)data); } void Events::listener_newInput(wl_listener* listener, void* data) { + const auto DEVICE = (wlr_input_device*)data; + + switch(DEVICE->type) { + case WLR_INPUT_DEVICE_KEYBOARD: + Debug::log(LOG, "Attached a keyboard with name %s", DEVICE->name); + // TODO: + break; + case WLR_INPUT_DEVICE_POINTER: + Debug::log(LOG, "Attached a mouse with name %s", DEVICE->name); + wlr_cursor_attach_input_device(g_pCompositor->m_sWLRCursor, DEVICE); + break; + default: + break; + } + + uint32_t capabilities = WL_SEAT_CAPABILITY_POINTER; + + // todo: keyboard caps + wlr_seat_set_capabilities(g_pCompositor->m_sWLRSeat, capabilities); } void Events::listener_newKeyboard(wl_listener* listener, void* data) { |
