diff --git a/src/lib/platform/PortalInputCapture.cpp b/src/lib/platform/PortalInputCapture.cpp index 5a44d85db..a9258bbc0 100644 --- a/src/lib/platform/PortalInputCapture.cpp +++ b/src/lib/platform/PortalInputCapture.cpp @@ -334,14 +334,18 @@ void PortalInputCapture::handleZonesChanged(XdpInputCaptureSession *session, con list = g_list_append(list, b); } - xdp_input_capture_session_set_pointer_barriers( - m_session, list, - nullptr, // cancellable - [](GObject *obj, GAsyncResult *res, gpointer data) { - static_cast(data)->handleSetPointerBarriers(obj, res); - }, - this - ); + if (list != nullptr) { + xdp_input_capture_session_set_pointer_barriers( + m_session, list, + nullptr, // cancellable + [](GObject *obj, GAsyncResult *res, gpointer data) { + static_cast(data)->handleSetPointerBarriers(obj, res); + }, + this + ); + } else { + LOG_WARN("no input capture pointer barriers found"); + } } void PortalInputCapture::glibThread(void *) diff --git a/src/lib/server/Server.cpp b/src/lib/server/Server.cpp index 2c47ab70e..92e27db29 100644 --- a/src/lib/server/Server.cpp +++ b/src/lib/server/Server.cpp @@ -134,8 +134,8 @@ Server::Server(ServerConfig &config, PrimaryClient *primaryClient, deskflow::Scr m_inputFilter->setPrimaryClient(m_primaryClient); // Determine if scroll lock is already set. If so, lock the cursor to the - // primary screen - if (m_primaryClient->getToggleMask() & KeyModifierScrollLock) { + // primary screen (unless the user has disabled lock to screen in config) + if (!m_disableLockToScreen && (m_primaryClient->getToggleMask() & KeyModifierScrollLock)) { LOG_NOTE("scroll lock is on, locking cursor to screen"); m_lockedToScreen = true; }