mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-26 18:25:59 +01:00
protocols: utilize hyprwayland-scanner 0.3.3 functions
stuff like ::version(), ::client(), ::error() etc
This commit is contained in:
parent
47b087950d
commit
0237e39f74
22 changed files with 105 additions and 148 deletions
|
@ -109,7 +109,7 @@ pkg_check_modules(deps REQUIRED IMPORTED_TARGET
|
||||||
wayland-server wayland-client wayland-cursor wayland-protocols
|
wayland-server wayland-client wayland-cursor wayland-protocols
|
||||||
cairo pango pangocairo pixman-1
|
cairo pango pangocairo pixman-1
|
||||||
libdrm libinput hwdata libseat libdisplay-info libliftoff libudev gbm
|
libdrm libinput hwdata libseat libdisplay-info libliftoff libudev gbm
|
||||||
hyprwayland-scanner>=0.3.2 hyprlang>=0.3.2 hyprcursor>=0.1.7
|
hyprwayland-scanner>=0.3.3 hyprlang>=0.3.2 hyprcursor>=0.1.7
|
||||||
)
|
)
|
||||||
|
|
||||||
file(GLOB_RECURSE SRCFILES CONFIGURE_DEPENDS "src/*.cpp")
|
file(GLOB_RECURSE SRCFILES CONFIGURE_DEPENDS "src/*.cpp")
|
||||||
|
|
|
@ -24,7 +24,7 @@ CAlphaModifier::CAlphaModifier(SP<CWpAlphaModifierSurfaceV1> resource_, wlr_surf
|
||||||
resource->setSetMultiplier([this](CWpAlphaModifierSurfaceV1* mod, uint32_t alpha) {
|
resource->setSetMultiplier([this](CWpAlphaModifierSurfaceV1* mod, uint32_t alpha) {
|
||||||
if (!pSurface) {
|
if (!pSurface) {
|
||||||
LOGM(ERR, "Resource {:x} tried to setMultiplier but surface is gone", (uintptr_t)mod->resource());
|
LOGM(ERR, "Resource {:x} tried to setMultiplier but surface is gone", (uintptr_t)mod->resource());
|
||||||
wl_resource_post_error(mod->resource(), WP_ALPHA_MODIFIER_SURFACE_V1_ERROR_NO_SURFACE, "Surface is gone");
|
mod->error(WP_ALPHA_MODIFIER_SURFACE_V1_ERROR_NO_SURFACE, "Surface is gone");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,18 +107,16 @@ void CAlphaModifierProtocol::destroyModifier(CAlphaModifier* modifier) {
|
||||||
void CAlphaModifierProtocol::onGetSurface(CWpAlphaModifierV1* pMgr, uint32_t id, wlr_surface* surface) {
|
void CAlphaModifierProtocol::onGetSurface(CWpAlphaModifierV1* pMgr, uint32_t id, wlr_surface* surface) {
|
||||||
if (m_mAlphaModifiers.contains(surface)) {
|
if (m_mAlphaModifiers.contains(surface)) {
|
||||||
LOGM(ERR, "AlphaModifier already present for surface {:x}", (uintptr_t)surface);
|
LOGM(ERR, "AlphaModifier already present for surface {:x}", (uintptr_t)surface);
|
||||||
wl_resource_post_error(pMgr->resource(), WP_ALPHA_MODIFIER_V1_ERROR_ALREADY_CONSTRUCTED, "AlphaModifier already present");
|
pMgr->error(WP_ALPHA_MODIFIER_V1_ERROR_ALREADY_CONSTRUCTED, "AlphaModifier already present");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto CLIENT = wl_resource_get_client(pMgr->resource());
|
|
||||||
const auto RESOURCE =
|
const auto RESOURCE =
|
||||||
m_mAlphaModifiers
|
m_mAlphaModifiers.emplace(surface, std::make_unique<CAlphaModifier>(std::make_shared<CWpAlphaModifierSurfaceV1>(pMgr->client(), pMgr->version(), id), surface))
|
||||||
.emplace(surface, std::make_unique<CAlphaModifier>(std::make_shared<CWpAlphaModifierSurfaceV1>(CLIENT, wl_resource_get_version(pMgr->resource()), id), surface))
|
|
||||||
.first->second.get();
|
.first->second.get();
|
||||||
|
|
||||||
if (!RESOURCE->good()) {
|
if (!RESOURCE->good()) {
|
||||||
wl_resource_post_no_memory(pMgr->resource());
|
pMgr->noMemory();
|
||||||
m_mAlphaModifiers.erase(surface);
|
m_mAlphaModifiers.erase(surface);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,8 +73,8 @@ void CCursorShapeProtocol::onGetTabletToolV2(CWpCursorShapeManagerV1* pMgr, uint
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCursorShapeProtocol::createCursorShapeDevice(CWpCursorShapeManagerV1* pMgr, uint32_t id, wl_resource* resource) {
|
void CCursorShapeProtocol::createCursorShapeDevice(CWpCursorShapeManagerV1* pMgr, uint32_t id, wl_resource* resource) {
|
||||||
const auto CLIENT = wl_resource_get_client(pMgr->resource());
|
const auto CLIENT = pMgr->client();
|
||||||
const auto RESOURCE = m_vDevices.emplace_back(std::make_shared<CWpCursorShapeDeviceV1>(CLIENT, wl_resource_get_version(pMgr->resource()), id));
|
const auto RESOURCE = m_vDevices.emplace_back(std::make_shared<CWpCursorShapeDeviceV1>(CLIENT, pMgr->version(), id));
|
||||||
RESOURCE->setOnDestroy([this](CWpCursorShapeDeviceV1* p) { this->onDeviceResourceDestroy(p->resource()); });
|
RESOURCE->setOnDestroy([this](CWpCursorShapeDeviceV1* p) { this->onDeviceResourceDestroy(p->resource()); });
|
||||||
|
|
||||||
RESOURCE->setDestroy([this](CWpCursorShapeDeviceV1* p) { this->onDeviceResourceDestroy(p->resource()); });
|
RESOURCE->setDestroy([this](CWpCursorShapeDeviceV1* p) { this->onDeviceResourceDestroy(p->resource()); });
|
||||||
|
@ -83,7 +83,7 @@ void CCursorShapeProtocol::createCursorShapeDevice(CWpCursorShapeManagerV1* pMgr
|
||||||
|
|
||||||
void CCursorShapeProtocol::onSetShape(CWpCursorShapeDeviceV1* pMgr, uint32_t serial, wpCursorShapeDeviceV1Shape shape) {
|
void CCursorShapeProtocol::onSetShape(CWpCursorShapeDeviceV1* pMgr, uint32_t serial, wpCursorShapeDeviceV1Shape shape) {
|
||||||
if ((uint32_t)shape == 0 || (uint32_t)shape > sizeof(SHAPE_NAMES)) {
|
if ((uint32_t)shape == 0 || (uint32_t)shape > sizeof(SHAPE_NAMES)) {
|
||||||
wl_resource_post_error(pMgr->resource(), WP_CURSOR_SHAPE_DEVICE_V1_ERROR_INVALID_SHAPE, "The shape is invalid");
|
pMgr->error(WP_CURSOR_SHAPE_DEVICE_V1_ERROR_INVALID_SHAPE, "The shape is invalid");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,12 +44,12 @@ void CForeignToplevelList::onMap(PHLWINDOW pWindow) {
|
||||||
if (finished)
|
if (finished)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const auto NEWHANDLE = PROTO::foreignToplevel->m_vHandles.emplace_back(std::make_shared<CForeignToplevelHandle>(
|
const auto NEWHANDLE = PROTO::foreignToplevel->m_vHandles.emplace_back(
|
||||||
std::make_shared<CExtForeignToplevelHandleV1>(wl_resource_get_client(resource->resource()), wl_resource_get_version(resource->resource()), 0), pWindow));
|
std::make_shared<CForeignToplevelHandle>(std::make_shared<CExtForeignToplevelHandleV1>(resource->client(), resource->version(), 0), pWindow));
|
||||||
|
|
||||||
if (!NEWHANDLE->good()) {
|
if (!NEWHANDLE->good()) {
|
||||||
LOGM(ERR, "Couldn't create a foreign handle");
|
LOGM(ERR, "Couldn't create a foreign handle");
|
||||||
wl_resource_post_no_memory(resource->resource());
|
resource->noMemory();
|
||||||
PROTO::foreignToplevel->m_vHandles.pop_back();
|
PROTO::foreignToplevel->m_vHandles.pop_back();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,7 +107,7 @@ void CForeignToplevelHandleWlr::sendMonitor(CMonitor* pMonitor) {
|
||||||
if (lastMonitorID == (int64_t)pMonitor->ID)
|
if (lastMonitorID == (int64_t)pMonitor->ID)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const auto CLIENT = wl_resource_get_client(resource->resource());
|
const auto CLIENT = resource->client();
|
||||||
|
|
||||||
struct wl_resource* outputResource;
|
struct wl_resource* outputResource;
|
||||||
|
|
||||||
|
@ -184,12 +184,12 @@ void CForeignToplevelWlrManager::onMap(PHLWINDOW pWindow) {
|
||||||
if (finished)
|
if (finished)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const auto NEWHANDLE = PROTO::foreignToplevelWlr->m_vHandles.emplace_back(std::make_shared<CForeignToplevelHandleWlr>(
|
const auto NEWHANDLE = PROTO::foreignToplevelWlr->m_vHandles.emplace_back(
|
||||||
std::make_shared<CZwlrForeignToplevelHandleV1>(wl_resource_get_client(resource->resource()), wl_resource_get_version(resource->resource()), 0), pWindow));
|
std::make_shared<CForeignToplevelHandleWlr>(std::make_shared<CZwlrForeignToplevelHandleV1>(resource->client(), resource->version(), 0), pWindow));
|
||||||
|
|
||||||
if (!NEWHANDLE->good()) {
|
if (!NEWHANDLE->good()) {
|
||||||
LOGM(ERR, "Couldn't create a foreign handle");
|
LOGM(ERR, "Couldn't create a foreign handle");
|
||||||
wl_resource_post_no_memory(resource->resource());
|
resource->noMemory();
|
||||||
PROTO::foreignToplevelWlr->m_vHandles.pop_back();
|
PROTO::foreignToplevelWlr->m_vHandles.pop_back();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,19 +32,16 @@ void CFractionalScaleProtocol::onManagerResourceDestroy(wl_resource* res) {
|
||||||
void CFractionalScaleProtocol::onGetFractionalScale(CWpFractionalScaleManagerV1* pMgr, uint32_t id, wlr_surface* surface) {
|
void CFractionalScaleProtocol::onGetFractionalScale(CWpFractionalScaleManagerV1* pMgr, uint32_t id, wlr_surface* surface) {
|
||||||
if (m_mAddons.contains(surface)) {
|
if (m_mAddons.contains(surface)) {
|
||||||
LOGM(ERR, "Surface {:x} already has a fractionalScale addon", (uintptr_t)surface);
|
LOGM(ERR, "Surface {:x} already has a fractionalScale addon", (uintptr_t)surface);
|
||||||
wl_resource_post_error(pMgr->resource(), WP_FRACTIONAL_SCALE_MANAGER_V1_ERROR_FRACTIONAL_SCALE_EXISTS, "Fractional scale already exists");
|
pMgr->error(WP_FRACTIONAL_SCALE_MANAGER_V1_ERROR_FRACTIONAL_SCALE_EXISTS, "Fractional scale already exists");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto PADDON = m_mAddons
|
const auto PADDON = m_mAddons.emplace(surface, std::make_unique<CFractionalScaleAddon>(std::make_shared<CWpFractionalScaleV1>(pMgr->client(), pMgr->version(), id), surface))
|
||||||
.emplace(surface,
|
|
||||||
std::make_unique<CFractionalScaleAddon>(
|
|
||||||
std::make_shared<CWpFractionalScaleV1>(wl_resource_get_client(pMgr->resource()), wl_resource_get_version(pMgr->resource()), id), surface))
|
|
||||||
.first->second.get();
|
.first->second.get();
|
||||||
|
|
||||||
if (!PADDON->good()) {
|
if (!PADDON->good()) {
|
||||||
m_mAddons.erase(surface);
|
m_mAddons.erase(surface);
|
||||||
wl_resource_post_no_memory(pMgr->resource());
|
pMgr->noMemory();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@ CGammaControl::CGammaControl(SP<CZwlrGammaControlV1> resource_, wl_resource* out
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
||||||
if ((size_t)readBytes != gammaTable.size() * sizeof(uint16_t)) {
|
if ((size_t)readBytes != gammaTable.size() * sizeof(uint16_t)) {
|
||||||
wl_resource_post_error(gamma->resource(), ZWLR_GAMMA_CONTROL_V1_ERROR_INVALID_GAMMA, "Gamma ramps size mismatch");
|
gamma->error(ZWLR_GAMMA_CONTROL_V1_ERROR_INVALID_GAMMA, "Gamma ramps size mismatch");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,13 +156,11 @@ void CGammaControlProtocol::destroyGammaControl(CGammaControl* gamma) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGammaControlProtocol::onGetGammaControl(CZwlrGammaControlManagerV1* pMgr, uint32_t id, wl_resource* output) {
|
void CGammaControlProtocol::onGetGammaControl(CZwlrGammaControlManagerV1* pMgr, uint32_t id, wl_resource* output) {
|
||||||
const auto CLIENT = wl_resource_get_client(pMgr->resource());
|
const auto CLIENT = pMgr->client();
|
||||||
const auto RESOURCE =
|
const auto RESOURCE = m_vGammaControllers.emplace_back(std::make_unique<CGammaControl>(std::make_shared<CZwlrGammaControlV1>(CLIENT, pMgr->version(), id), output)).get();
|
||||||
m_vGammaControllers.emplace_back(std::make_unique<CGammaControl>(std::make_shared<CZwlrGammaControlV1>(CLIENT, wl_resource_get_version(pMgr->resource()), id), output))
|
|
||||||
.get();
|
|
||||||
|
|
||||||
if (!RESOURCE->good()) {
|
if (!RESOURCE->good()) {
|
||||||
wl_resource_post_no_memory(pMgr->resource());
|
pMgr->noMemory();
|
||||||
m_vGammaControllers.pop_back();
|
m_vGammaControllers.pop_back();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,9 +47,8 @@ void CIdleInhibitProtocol::removeInhibitor(CIdleInhibitorResource* resource) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CIdleInhibitProtocol::onCreateInhibitor(CZwpIdleInhibitManagerV1* pMgr, uint32_t id, wlr_surface* surface) {
|
void CIdleInhibitProtocol::onCreateInhibitor(CZwpIdleInhibitManagerV1* pMgr, uint32_t id, wlr_surface* surface) {
|
||||||
const auto CLIENT = wl_resource_get_client(pMgr->resource());
|
const auto CLIENT = pMgr->client();
|
||||||
const auto RESOURCE =
|
const auto RESOURCE = m_vInhibitors.emplace_back(std::make_shared<CIdleInhibitorResource>(std::make_shared<CZwpIdleInhibitorV1>(CLIENT, pMgr->version(), id), surface));
|
||||||
m_vInhibitors.emplace_back(std::make_shared<CIdleInhibitorResource>(std::make_shared<CZwpIdleInhibitorV1>(CLIENT, wl_resource_get_version(pMgr->resource()), id), surface));
|
|
||||||
|
|
||||||
RESOURCE->inhibitor = std::make_shared<CIdleInhibitor>(RESOURCE, surface);
|
RESOURCE->inhibitor = std::make_shared<CIdleInhibitor>(RESOURCE, surface);
|
||||||
events.newIdleInhibitor.emit(RESOURCE->inhibitor);
|
events.newIdleInhibitor.emit(RESOURCE->inhibitor);
|
||||||
|
|
|
@ -77,14 +77,12 @@ void CIdleNotifyProtocol::destroyNotification(CExtIdleNotification* notif) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CIdleNotifyProtocol::onGetNotification(CExtIdleNotifierV1* pMgr, uint32_t id, uint32_t timeout, wl_resource* seat) {
|
void CIdleNotifyProtocol::onGetNotification(CExtIdleNotifierV1* pMgr, uint32_t id, uint32_t timeout, wl_resource* seat) {
|
||||||
const auto CLIENT = wl_resource_get_client(pMgr->resource());
|
const auto CLIENT = pMgr->client();
|
||||||
const auto RESOURCE =
|
const auto RESOURCE =
|
||||||
m_vNotifications
|
m_vNotifications.emplace_back(std::make_unique<CExtIdleNotification>(std::make_shared<CExtIdleNotificationV1>(CLIENT, pMgr->version(), id), timeout)).get();
|
||||||
.emplace_back(std::make_unique<CExtIdleNotification>(std::make_shared<CExtIdleNotificationV1>(CLIENT, wl_resource_get_version(pMgr->resource()), id), timeout))
|
|
||||||
.get();
|
|
||||||
|
|
||||||
if (!RESOURCE->good()) {
|
if (!RESOURCE->good()) {
|
||||||
wl_resource_post_no_memory(pMgr->resource());
|
pMgr->noMemory();
|
||||||
m_vNotifications.pop_back();
|
m_vNotifications.pop_back();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,13 +59,13 @@ void CInputMethodKeyboardGrabV2::sendKeyboardData(wlr_keyboard* keyboard) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CInputMethodKeyboardGrabV2::sendKey(uint32_t time, uint32_t key, wl_keyboard_key_state state) {
|
void CInputMethodKeyboardGrabV2::sendKey(uint32_t time, uint32_t key, wl_keyboard_key_state state) {
|
||||||
const auto SERIAL = wlr_seat_client_next_serial(wlr_seat_client_for_wl_client(g_pCompositor->m_sSeat.seat, wl_resource_get_client(resource->resource())));
|
const auto SERIAL = wlr_seat_client_next_serial(wlr_seat_client_for_wl_client(g_pCompositor->m_sSeat.seat, resource->client()));
|
||||||
|
|
||||||
resource->sendKey(SERIAL, time, key, (uint32_t)state);
|
resource->sendKey(SERIAL, time, key, (uint32_t)state);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CInputMethodKeyboardGrabV2::sendMods(uint32_t depressed, uint32_t latched, uint32_t locked, uint32_t group) {
|
void CInputMethodKeyboardGrabV2::sendMods(uint32_t depressed, uint32_t latched, uint32_t locked, uint32_t group) {
|
||||||
const auto SERIAL = wlr_seat_client_next_serial(wlr_seat_client_for_wl_client(g_pCompositor->m_sSeat.seat, wl_resource_get_client(resource->resource())));
|
const auto SERIAL = wlr_seat_client_next_serial(wlr_seat_client_for_wl_client(g_pCompositor->m_sSeat.seat, resource->client()));
|
||||||
|
|
||||||
resource->sendModifiers(SERIAL, depressed, latched, locked, group);
|
resource->sendModifiers(SERIAL, depressed, latched, locked, group);
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@ SP<CInputMethodV2> CInputMethodKeyboardGrabV2::getOwner() {
|
||||||
}
|
}
|
||||||
|
|
||||||
wl_client* CInputMethodKeyboardGrabV2::client() {
|
wl_client* CInputMethodKeyboardGrabV2::client() {
|
||||||
return wl_resource_get_client(resource->resource());
|
return resource->client();
|
||||||
}
|
}
|
||||||
|
|
||||||
CInputMethodPopupV2::CInputMethodPopupV2(SP<CZwpInputPopupSurfaceV2> resource_, SP<CInputMethodV2> owner_, wlr_surface* wlrSurface) : resource(resource_), owner(owner_) {
|
CInputMethodPopupV2::CInputMethodPopupV2(SP<CZwpInputPopupSurfaceV2> resource_, SP<CInputMethodV2> owner_, wlr_surface* wlrSurface) : resource(resource_), owner(owner_) {
|
||||||
|
@ -192,12 +192,11 @@ CInputMethodV2::CInputMethodV2(SP<CZwpInputMethodV2> resource_) : resource(resou
|
||||||
});
|
});
|
||||||
|
|
||||||
resource->setGetInputPopupSurface([this](CZwpInputMethodV2* r, uint32_t id, wl_resource* surface) {
|
resource->setGetInputPopupSurface([this](CZwpInputMethodV2* r, uint32_t id, wl_resource* surface) {
|
||||||
const auto CLIENT = wl_resource_get_client(r->resource());
|
const auto RESOURCE = PROTO::ime->m_vPopups.emplace_back(
|
||||||
const auto RESOURCE = PROTO::ime->m_vPopups.emplace_back(std::make_shared<CInputMethodPopupV2>(
|
std::make_shared<CInputMethodPopupV2>(std::make_shared<CZwpInputPopupSurfaceV2>(r->client(), r->version(), id), self.lock(), wlr_surface_from_resource(surface)));
|
||||||
std::make_shared<CZwpInputPopupSurfaceV2>(CLIENT, wl_resource_get_version(r->resource()), id), self.lock(), wlr_surface_from_resource(surface)));
|
|
||||||
|
|
||||||
if (!RESOURCE->good()) {
|
if (!RESOURCE->good()) {
|
||||||
wl_resource_post_no_memory(r->resource());
|
r->noMemory();
|
||||||
PROTO::ime->m_vPopups.pop_back();
|
PROTO::ime->m_vPopups.pop_back();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -210,12 +209,11 @@ CInputMethodV2::CInputMethodV2(SP<CZwpInputMethodV2> resource_) : resource(resou
|
||||||
});
|
});
|
||||||
|
|
||||||
resource->setGrabKeyboard([this](CZwpInputMethodV2* r, uint32_t id) {
|
resource->setGrabKeyboard([this](CZwpInputMethodV2* r, uint32_t id) {
|
||||||
const auto CLIENT = wl_resource_get_client(r->resource());
|
|
||||||
const auto RESOURCE = PROTO::ime->m_vGrabs.emplace_back(
|
const auto RESOURCE = PROTO::ime->m_vGrabs.emplace_back(
|
||||||
std::make_shared<CInputMethodKeyboardGrabV2>(std::make_shared<CZwpInputMethodKeyboardGrabV2>(CLIENT, wl_resource_get_version(r->resource()), id), self.lock()));
|
std::make_shared<CInputMethodKeyboardGrabV2>(std::make_shared<CZwpInputMethodKeyboardGrabV2>(r->client(), r->version(), id), self.lock()));
|
||||||
|
|
||||||
if (!RESOURCE->good()) {
|
if (!RESOURCE->good()) {
|
||||||
wl_resource_post_no_memory(r->resource());
|
r->noMemory();
|
||||||
PROTO::ime->m_vGrabs.pop_back();
|
PROTO::ime->m_vGrabs.pop_back();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -334,7 +332,7 @@ void CInputMethodV2::setKeyboard(wlr_keyboard* keyboard) {
|
||||||
}
|
}
|
||||||
|
|
||||||
wl_client* CInputMethodV2::client() {
|
wl_client* CInputMethodV2::client() {
|
||||||
return wl_resource_get_client(resource->resource());
|
return resource->client();
|
||||||
}
|
}
|
||||||
|
|
||||||
CInputMethodV2Protocol::CInputMethodV2Protocol(const wl_interface* iface, const int& ver, const std::string& name) : IWaylandProtocol(iface, ver, name) {
|
CInputMethodV2Protocol::CInputMethodV2Protocol(const wl_interface* iface, const int& ver, const std::string& name) : IWaylandProtocol(iface, ver, name) {
|
||||||
|
@ -366,11 +364,10 @@ void CInputMethodV2Protocol::destroyResource(CInputMethodV2* ime) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CInputMethodV2Protocol::onGetIME(CZwpInputMethodManagerV2* mgr, wl_resource* seat, uint32_t id) {
|
void CInputMethodV2Protocol::onGetIME(CZwpInputMethodManagerV2* mgr, wl_resource* seat, uint32_t id) {
|
||||||
const auto CLIENT = wl_resource_get_client(mgr->resource());
|
const auto RESOURCE = m_vIMEs.emplace_back(std::make_shared<CInputMethodV2>(std::make_shared<CZwpInputMethodV2>(mgr->client(), mgr->version(), id)));
|
||||||
const auto RESOURCE = m_vIMEs.emplace_back(std::make_shared<CInputMethodV2>(std::make_shared<CZwpInputMethodV2>(CLIENT, wl_resource_get_version(mgr->resource()), id)));
|
|
||||||
|
|
||||||
if (!RESOURCE->good()) {
|
if (!RESOURCE->good()) {
|
||||||
wl_resource_post_no_memory(mgr->resource());
|
mgr->noMemory();
|
||||||
m_vIMEs.pop_back();
|
m_vIMEs.pop_back();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,16 +64,15 @@ void COutputPowerProtocol::onGetOutputPower(CZwlrOutputPowerManagerV1* pMgr, uin
|
||||||
const auto PMONITOR = g_pCompositor->getMonitorFromOutput(wlr_output_from_resource(output));
|
const auto PMONITOR = g_pCompositor->getMonitorFromOutput(wlr_output_from_resource(output));
|
||||||
|
|
||||||
if (!PMONITOR) {
|
if (!PMONITOR) {
|
||||||
wl_resource_post_error(pMgr->resource(), 0, "Invalid output resource");
|
pMgr->error(0, "Invalid output resource");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto CLIENT = wl_resource_get_client(pMgr->resource());
|
const auto CLIENT = pMgr->client();
|
||||||
const auto RESOURCE =
|
const auto RESOURCE = m_vOutputPowers.emplace_back(std::make_unique<COutputPower>(std::make_shared<CZwlrOutputPowerV1>(CLIENT, pMgr->version(), id), PMONITOR)).get();
|
||||||
m_vOutputPowers.emplace_back(std::make_unique<COutputPower>(std::make_shared<CZwlrOutputPowerV1>(CLIENT, wl_resource_get_version(pMgr->resource()), id), PMONITOR)).get();
|
|
||||||
|
|
||||||
if (!RESOURCE->good()) {
|
if (!RESOURCE->good()) {
|
||||||
wl_resource_post_no_memory(pMgr->resource());
|
pMgr->noMemory();
|
||||||
m_vOutputPowers.pop_back();
|
m_vOutputPowers.pop_back();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -216,7 +216,7 @@ void CPointerConstraintsProtocol::destroyPointerConstraint(CPointerConstraint* h
|
||||||
void CPointerConstraintsProtocol::onNewConstraint(SP<CPointerConstraint> constraint, CZwpPointerConstraintsV1* pMgr) {
|
void CPointerConstraintsProtocol::onNewConstraint(SP<CPointerConstraint> constraint, CZwpPointerConstraintsV1* pMgr) {
|
||||||
if (!constraint->good()) {
|
if (!constraint->good()) {
|
||||||
LOGM(ERR, "Couldn't create constraint??");
|
LOGM(ERR, "Couldn't create constraint??");
|
||||||
wl_resource_post_no_memory(pMgr->resource());
|
pMgr->noMemory();
|
||||||
m_vConstraints.pop_back();
|
m_vConstraints.pop_back();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -232,7 +232,7 @@ void CPointerConstraintsProtocol::onNewConstraint(SP<CPointerConstraint> constra
|
||||||
|
|
||||||
if (DUPES > 1) {
|
if (DUPES > 1) {
|
||||||
LOGM(ERR, "Constraint for surface duped");
|
LOGM(ERR, "Constraint for surface duped");
|
||||||
wl_resource_post_error(pMgr->resource(), ZWP_POINTER_CONSTRAINTS_V1_ERROR_ALREADY_CONSTRAINED, "Surface already confined");
|
pMgr->error(ZWP_POINTER_CONSTRAINTS_V1_ERROR_ALREADY_CONSTRAINED, "Surface already confined");
|
||||||
m_vConstraints.pop_back();
|
m_vConstraints.pop_back();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -244,18 +244,18 @@ void CPointerConstraintsProtocol::onNewConstraint(SP<CPointerConstraint> constra
|
||||||
|
|
||||||
void CPointerConstraintsProtocol::onLockPointer(CZwpPointerConstraintsV1* pMgr, uint32_t id, wl_resource* surface, wl_resource* pointer, wl_resource* region,
|
void CPointerConstraintsProtocol::onLockPointer(CZwpPointerConstraintsV1* pMgr, uint32_t id, wl_resource* surface, wl_resource* pointer, wl_resource* region,
|
||||||
zwpPointerConstraintsV1Lifetime lifetime) {
|
zwpPointerConstraintsV1Lifetime lifetime) {
|
||||||
const auto CLIENT = wl_resource_get_client(pMgr->resource());
|
const auto CLIENT = pMgr->client();
|
||||||
const auto RESOURCE = m_vConstraints.emplace_back(std::make_shared<CPointerConstraint>(
|
const auto RESOURCE = m_vConstraints.emplace_back(
|
||||||
std::make_shared<CZwpLockedPointerV1>(CLIENT, wl_resource_get_version(pMgr->resource()), id), wlr_surface_from_resource(surface), region, lifetime));
|
std::make_shared<CPointerConstraint>(std::make_shared<CZwpLockedPointerV1>(CLIENT, pMgr->version(), id), wlr_surface_from_resource(surface), region, lifetime));
|
||||||
|
|
||||||
onNewConstraint(RESOURCE, pMgr);
|
onNewConstraint(RESOURCE, pMgr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPointerConstraintsProtocol::onConfinePointer(CZwpPointerConstraintsV1* pMgr, uint32_t id, wl_resource* surface, wl_resource* pointer, wl_resource* region,
|
void CPointerConstraintsProtocol::onConfinePointer(CZwpPointerConstraintsV1* pMgr, uint32_t id, wl_resource* surface, wl_resource* pointer, wl_resource* region,
|
||||||
zwpPointerConstraintsV1Lifetime lifetime) {
|
zwpPointerConstraintsV1Lifetime lifetime) {
|
||||||
const auto CLIENT = wl_resource_get_client(pMgr->resource());
|
const auto CLIENT = pMgr->client();
|
||||||
const auto RESOURCE = m_vConstraints.emplace_back(std::make_shared<CPointerConstraint>(
|
const auto RESOURCE = m_vConstraints.emplace_back(
|
||||||
std::make_shared<CZwpConfinedPointerV1>(CLIENT, wl_resource_get_version(pMgr->resource()), id), wlr_surface_from_resource(surface), region, lifetime));
|
std::make_shared<CPointerConstraint>(std::make_shared<CZwpConfinedPointerV1>(CLIENT, pMgr->version(), id), wlr_surface_from_resource(surface), region, lifetime));
|
||||||
|
|
||||||
onNewConstraint(RESOURCE, pMgr);
|
onNewConstraint(RESOURCE, pMgr);
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,36 +70,33 @@ void CPointerGesturesProtocol::onGestureDestroy(CPointerGestureHold* gesture) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPointerGesturesProtocol::onGetPinchGesture(CZwpPointerGesturesV1* pMgr, uint32_t id, wl_resource* pointer) {
|
void CPointerGesturesProtocol::onGetPinchGesture(CZwpPointerGesturesV1* pMgr, uint32_t id, wl_resource* pointer) {
|
||||||
const auto CLIENT = wl_resource_get_client(pMgr->resource());
|
const auto CLIENT = pMgr->client();
|
||||||
const auto RESOURCE =
|
const auto RESOURCE = m_vPinches.emplace_back(std::make_unique<CPointerGesturePinch>(std::make_shared<CZwpPointerGesturePinchV1>(CLIENT, pMgr->version(), id))).get();
|
||||||
m_vPinches.emplace_back(std::make_unique<CPointerGesturePinch>(std::make_shared<CZwpPointerGesturePinchV1>(CLIENT, wl_resource_get_version(pMgr->resource()), id))).get();
|
|
||||||
|
|
||||||
if (!RESOURCE->good()) {
|
if (!RESOURCE->good()) {
|
||||||
wl_resource_post_no_memory(pMgr->resource());
|
pMgr->noMemory();
|
||||||
LOGM(ERR, "Couldn't create gesture");
|
LOGM(ERR, "Couldn't create gesture");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPointerGesturesProtocol::onGetSwipeGesture(CZwpPointerGesturesV1* pMgr, uint32_t id, wl_resource* pointer) {
|
void CPointerGesturesProtocol::onGetSwipeGesture(CZwpPointerGesturesV1* pMgr, uint32_t id, wl_resource* pointer) {
|
||||||
const auto CLIENT = wl_resource_get_client(pMgr->resource());
|
const auto CLIENT = pMgr->client();
|
||||||
const auto RESOURCE =
|
const auto RESOURCE = m_vSwipes.emplace_back(std::make_unique<CPointerGestureSwipe>(std::make_shared<CZwpPointerGestureSwipeV1>(CLIENT, pMgr->version(), id))).get();
|
||||||
m_vSwipes.emplace_back(std::make_unique<CPointerGestureSwipe>(std::make_shared<CZwpPointerGestureSwipeV1>(CLIENT, wl_resource_get_version(pMgr->resource()), id))).get();
|
|
||||||
|
|
||||||
if (!RESOURCE->good()) {
|
if (!RESOURCE->good()) {
|
||||||
wl_resource_post_no_memory(pMgr->resource());
|
pMgr->noMemory();
|
||||||
LOGM(ERR, "Couldn't create gesture");
|
LOGM(ERR, "Couldn't create gesture");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPointerGesturesProtocol::onGetHoldGesture(CZwpPointerGesturesV1* pMgr, uint32_t id, wl_resource* pointer) {
|
void CPointerGesturesProtocol::onGetHoldGesture(CZwpPointerGesturesV1* pMgr, uint32_t id, wl_resource* pointer) {
|
||||||
const auto CLIENT = wl_resource_get_client(pMgr->resource());
|
const auto CLIENT = pMgr->client();
|
||||||
const auto RESOURCE =
|
const auto RESOURCE = m_vHolds.emplace_back(std::make_unique<CPointerGestureHold>(std::make_shared<CZwpPointerGestureHoldV1>(CLIENT, pMgr->version(), id))).get();
|
||||||
m_vHolds.emplace_back(std::make_unique<CPointerGestureHold>(std::make_shared<CZwpPointerGestureHoldV1>(CLIENT, wl_resource_get_version(pMgr->resource()), id))).get();
|
|
||||||
|
|
||||||
if (!RESOURCE->good()) {
|
if (!RESOURCE->good()) {
|
||||||
wl_resource_post_no_memory(pMgr->resource());
|
pMgr->noMemory();
|
||||||
LOGM(ERR, "Couldn't create gesture");
|
LOGM(ERR, "Couldn't create gesture");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -114,9 +111,7 @@ void CPointerGesturesProtocol::swipeBegin(uint32_t timeMs, uint32_t fingers) {
|
||||||
const auto SERIAL = wlr_seat_client_next_serial(g_pCompositor->m_sSeat.seat->pointer_state.focused_client);
|
const auto SERIAL = wlr_seat_client_next_serial(g_pCompositor->m_sSeat.seat->pointer_state.focused_client);
|
||||||
|
|
||||||
for (auto& sw : m_vSwipes) {
|
for (auto& sw : m_vSwipes) {
|
||||||
const auto CLIENT = wl_resource_get_client(sw->resource->resource());
|
if (sw->resource->client() != FOCUSEDCLIENT)
|
||||||
|
|
||||||
if (CLIENT != FOCUSEDCLIENT)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
sw->resource->sendBegin(SERIAL, timeMs, g_pCompositor->m_sSeat.seat->pointer_state.focused_surface->resource, fingers);
|
sw->resource->sendBegin(SERIAL, timeMs, g_pCompositor->m_sSeat.seat->pointer_state.focused_surface->resource, fingers);
|
||||||
|
@ -130,9 +125,7 @@ void CPointerGesturesProtocol::swipeUpdate(uint32_t timeMs, const Vector2D& delt
|
||||||
const auto FOCUSEDCLIENT = g_pCompositor->m_sSeat.seat->pointer_state.focused_client->client;
|
const auto FOCUSEDCLIENT = g_pCompositor->m_sSeat.seat->pointer_state.focused_client->client;
|
||||||
|
|
||||||
for (auto& sw : m_vSwipes) {
|
for (auto& sw : m_vSwipes) {
|
||||||
const auto CLIENT = wl_resource_get_client(sw->resource->resource());
|
if (sw->resource->client() != FOCUSEDCLIENT)
|
||||||
|
|
||||||
if (CLIENT != FOCUSEDCLIENT)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
sw->resource->sendUpdate(timeMs, wl_fixed_from_double(delta.x), wl_fixed_from_double(delta.y));
|
sw->resource->sendUpdate(timeMs, wl_fixed_from_double(delta.x), wl_fixed_from_double(delta.y));
|
||||||
|
@ -148,9 +141,7 @@ void CPointerGesturesProtocol::swipeEnd(uint32_t timeMs, bool cancelled) {
|
||||||
const auto SERIAL = wlr_seat_client_next_serial(g_pCompositor->m_sSeat.seat->pointer_state.focused_client);
|
const auto SERIAL = wlr_seat_client_next_serial(g_pCompositor->m_sSeat.seat->pointer_state.focused_client);
|
||||||
|
|
||||||
for (auto& sw : m_vSwipes) {
|
for (auto& sw : m_vSwipes) {
|
||||||
const auto CLIENT = wl_resource_get_client(sw->resource->resource());
|
if (sw->resource->client() != FOCUSEDCLIENT)
|
||||||
|
|
||||||
if (CLIENT != FOCUSEDCLIENT)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
sw->resource->sendEnd(SERIAL, timeMs, cancelled);
|
sw->resource->sendEnd(SERIAL, timeMs, cancelled);
|
||||||
|
@ -166,9 +157,7 @@ void CPointerGesturesProtocol::pinchBegin(uint32_t timeMs, uint32_t fingers) {
|
||||||
const auto SERIAL = wlr_seat_client_next_serial(g_pCompositor->m_sSeat.seat->pointer_state.focused_client);
|
const auto SERIAL = wlr_seat_client_next_serial(g_pCompositor->m_sSeat.seat->pointer_state.focused_client);
|
||||||
|
|
||||||
for (auto& sw : m_vPinches) {
|
for (auto& sw : m_vPinches) {
|
||||||
const auto CLIENT = wl_resource_get_client(sw->resource->resource());
|
if (sw->resource->client() != FOCUSEDCLIENT)
|
||||||
|
|
||||||
if (CLIENT != FOCUSEDCLIENT)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
sw->resource->sendBegin(SERIAL, timeMs, g_pCompositor->m_sSeat.seat->pointer_state.focused_surface->resource, fingers);
|
sw->resource->sendBegin(SERIAL, timeMs, g_pCompositor->m_sSeat.seat->pointer_state.focused_surface->resource, fingers);
|
||||||
|
@ -182,9 +171,7 @@ void CPointerGesturesProtocol::pinchUpdate(uint32_t timeMs, const Vector2D& delt
|
||||||
const auto FOCUSEDCLIENT = g_pCompositor->m_sSeat.seat->pointer_state.focused_client->client;
|
const auto FOCUSEDCLIENT = g_pCompositor->m_sSeat.seat->pointer_state.focused_client->client;
|
||||||
|
|
||||||
for (auto& sw : m_vPinches) {
|
for (auto& sw : m_vPinches) {
|
||||||
const auto CLIENT = wl_resource_get_client(sw->resource->resource());
|
if (sw->resource->client() != FOCUSEDCLIENT)
|
||||||
|
|
||||||
if (CLIENT != FOCUSEDCLIENT)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
sw->resource->sendUpdate(timeMs, wl_fixed_from_double(delta.x), wl_fixed_from_double(delta.y), wl_fixed_from_double(scale), wl_fixed_from_double(rotation));
|
sw->resource->sendUpdate(timeMs, wl_fixed_from_double(delta.x), wl_fixed_from_double(delta.y), wl_fixed_from_double(scale), wl_fixed_from_double(rotation));
|
||||||
|
@ -200,9 +187,7 @@ void CPointerGesturesProtocol::pinchEnd(uint32_t timeMs, bool cancelled) {
|
||||||
const auto SERIAL = wlr_seat_client_next_serial(g_pCompositor->m_sSeat.seat->pointer_state.focused_client);
|
const auto SERIAL = wlr_seat_client_next_serial(g_pCompositor->m_sSeat.seat->pointer_state.focused_client);
|
||||||
|
|
||||||
for (auto& sw : m_vPinches) {
|
for (auto& sw : m_vPinches) {
|
||||||
const auto CLIENT = wl_resource_get_client(sw->resource->resource());
|
if (sw->resource->client() != FOCUSEDCLIENT)
|
||||||
|
|
||||||
if (CLIENT != FOCUSEDCLIENT)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
sw->resource->sendEnd(SERIAL, timeMs, cancelled);
|
sw->resource->sendEnd(SERIAL, timeMs, cancelled);
|
||||||
|
@ -218,9 +203,7 @@ void CPointerGesturesProtocol::holdBegin(uint32_t timeMs, uint32_t fingers) {
|
||||||
const auto SERIAL = wlr_seat_client_next_serial(g_pCompositor->m_sSeat.seat->pointer_state.focused_client);
|
const auto SERIAL = wlr_seat_client_next_serial(g_pCompositor->m_sSeat.seat->pointer_state.focused_client);
|
||||||
|
|
||||||
for (auto& sw : m_vHolds) {
|
for (auto& sw : m_vHolds) {
|
||||||
const auto CLIENT = wl_resource_get_client(sw->resource->resource());
|
if (sw->resource->client() != FOCUSEDCLIENT)
|
||||||
|
|
||||||
if (CLIENT != FOCUSEDCLIENT)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
sw->resource->sendBegin(SERIAL, timeMs, g_pCompositor->m_sSeat.seat->pointer_state.focused_surface->resource, fingers);
|
sw->resource->sendBegin(SERIAL, timeMs, g_pCompositor->m_sSeat.seat->pointer_state.focused_surface->resource, fingers);
|
||||||
|
@ -236,9 +219,7 @@ void CPointerGesturesProtocol::holdEnd(uint32_t timeMs, bool cancelled) {
|
||||||
const auto SERIAL = wlr_seat_client_next_serial(g_pCompositor->m_sSeat.seat->pointer_state.focused_client);
|
const auto SERIAL = wlr_seat_client_next_serial(g_pCompositor->m_sSeat.seat->pointer_state.focused_client);
|
||||||
|
|
||||||
for (auto& sw : m_vHolds) {
|
for (auto& sw : m_vHolds) {
|
||||||
const auto CLIENT = wl_resource_get_client(sw->resource->resource());
|
if (sw->resource->client() != FOCUSEDCLIENT)
|
||||||
|
|
||||||
if (CLIENT != FOCUSEDCLIENT)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
sw->resource->sendEnd(SERIAL, timeMs, cancelled);
|
sw->resource->sendEnd(SERIAL, timeMs, cancelled);
|
||||||
|
|
|
@ -6,7 +6,7 @@ CRelativePointer::CRelativePointer(SP<CZwpRelativePointerV1> resource_) : resour
|
||||||
if (!resource_->resource())
|
if (!resource_->resource())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
pClient = wl_resource_get_client(resource_->resource());
|
pClient = resource->client();
|
||||||
|
|
||||||
resource->setDestroy([this](CZwpRelativePointerV1* pMgr) { PROTO::relativePointer->destroyRelativePointer(this); });
|
resource->setDestroy([this](CZwpRelativePointerV1* pMgr) { PROTO::relativePointer->destroyRelativePointer(this); });
|
||||||
resource->setOnDestroy([this](CZwpRelativePointerV1* pMgr) { PROTO::relativePointer->destroyRelativePointer(this); });
|
resource->setOnDestroy([this](CZwpRelativePointerV1* pMgr) { PROTO::relativePointer->destroyRelativePointer(this); });
|
||||||
|
@ -46,12 +46,11 @@ void CRelativePointerProtocol::destroyRelativePointer(CRelativePointer* pointer)
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRelativePointerProtocol::onGetRelativePointer(CZwpRelativePointerManagerV1* pMgr, uint32_t id, wl_resource* pointer) {
|
void CRelativePointerProtocol::onGetRelativePointer(CZwpRelativePointerManagerV1* pMgr, uint32_t id, wl_resource* pointer) {
|
||||||
const auto CLIENT = wl_resource_get_client(pMgr->resource());
|
const auto CLIENT = pMgr->client();
|
||||||
const auto RESOURCE =
|
const auto RESOURCE = m_vRelativePointers.emplace_back(std::make_unique<CRelativePointer>(std::make_shared<CZwpRelativePointerV1>(CLIENT, pMgr->version(), id))).get();
|
||||||
m_vRelativePointers.emplace_back(std::make_unique<CRelativePointer>(std::make_shared<CZwpRelativePointerV1>(CLIENT, wl_resource_get_version(pMgr->resource()), id))).get();
|
|
||||||
|
|
||||||
if (!RESOURCE->good()) {
|
if (!RESOURCE->good()) {
|
||||||
wl_resource_post_no_memory(pMgr->resource());
|
pMgr->noMemory();
|
||||||
m_vRelativePointers.pop_back();
|
m_vRelativePointers.pop_back();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,13 +24,13 @@ CSessionLockSurface::CSessionLockSurface(SP<CExtSessionLockSurfaceV1> resource_,
|
||||||
[this](void* owner, void* data) {
|
[this](void* owner, void* data) {
|
||||||
if (pSurface->pending.buffer_width <= 0 || pSurface->pending.buffer_height <= 0) {
|
if (pSurface->pending.buffer_width <= 0 || pSurface->pending.buffer_height <= 0) {
|
||||||
LOGM(ERR, "SessionLock attached a null buffer");
|
LOGM(ERR, "SessionLock attached a null buffer");
|
||||||
wl_resource_post_error(resource->resource(), EXT_SESSION_LOCK_SURFACE_V1_ERROR_NULL_BUFFER, "Null buffer attached");
|
resource->error(EXT_SESSION_LOCK_SURFACE_V1_ERROR_NULL_BUFFER, "Null buffer attached");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ackdConfigure) {
|
if (!ackdConfigure) {
|
||||||
LOGM(ERR, "SessionLock committed without an ack");
|
LOGM(ERR, "SessionLock committed without an ack");
|
||||||
wl_resource_post_error(resource->resource(), EXT_SESSION_LOCK_SURFACE_V1_ERROR_COMMIT_BEFORE_FIRST_ACK, "Committed surface before first ack");
|
resource->error(EXT_SESSION_LOCK_SURFACE_V1_ERROR_COMMIT_BEFORE_FIRST_ACK, "Committed surface before first ack");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,8 +73,7 @@ CSessionLockSurface::~CSessionLockSurface() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSessionLockSurface::sendConfigure() {
|
void CSessionLockSurface::sendConfigure() {
|
||||||
const auto CLIENT = wl_resource_get_client(resource->resource());
|
const auto SERIAL = wlr_seat_client_next_serial(wlr_seat_client_for_wl_client(g_pCompositor->m_sSeat.seat, resource->client()));
|
||||||
const auto SERIAL = wlr_seat_client_next_serial(wlr_seat_client_for_wl_client(g_pCompositor->m_sSeat.seat, CLIENT));
|
|
||||||
resource->sendConfigure(SERIAL, pMonitor->vecSize.x, pMonitor->vecSize.y);
|
resource->sendConfigure(SERIAL, pMonitor->vecSize.x, pMonitor->vecSize.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,11 +157,11 @@ void CSessionLockProtocol::onLock(CExtSessionLockManagerV1* pMgr, uint32_t id) {
|
||||||
|
|
||||||
LOGM(LOG, "New sessionLock with id {}", id);
|
LOGM(LOG, "New sessionLock with id {}", id);
|
||||||
|
|
||||||
const auto CLIENT = wl_resource_get_client(pMgr->resource());
|
const auto CLIENT = pMgr->client();
|
||||||
const auto RESOURCE = m_vLocks.emplace_back(std::make_unique<CSessionLock>(std::make_shared<CExtSessionLockV1>(CLIENT, wl_resource_get_version(pMgr->resource()), id)));
|
const auto RESOURCE = m_vLocks.emplace_back(std::make_unique<CSessionLock>(std::make_shared<CExtSessionLockV1>(CLIENT, pMgr->version(), id)));
|
||||||
|
|
||||||
if (!RESOURCE->good()) {
|
if (!RESOURCE->good()) {
|
||||||
wl_resource_post_no_memory(pMgr->resource());
|
pMgr->noMemory();
|
||||||
m_vLocks.pop_back();
|
m_vLocks.pop_back();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -193,12 +192,11 @@ void CSessionLockProtocol::onGetLockSurface(CExtSessionLockV1* lock, uint32_t id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto CLIENT = wl_resource_get_client(lock->resource());
|
|
||||||
const auto RESOURCE = m_vLockSurfaces.emplace_back(
|
const auto RESOURCE = m_vLockSurfaces.emplace_back(
|
||||||
std::make_unique<CSessionLockSurface>(std::make_shared<CExtSessionLockSurfaceV1>(CLIENT, wl_resource_get_version(lock->resource()), id), PSURFACE, PMONITOR, sessionLock));
|
std::make_unique<CSessionLockSurface>(std::make_shared<CExtSessionLockSurfaceV1>(lock->client(), lock->version(), id), PSURFACE, PMONITOR, sessionLock));
|
||||||
|
|
||||||
if (!RESOURCE->good()) {
|
if (!RESOURCE->good()) {
|
||||||
wl_resource_post_no_memory(lock->resource());
|
lock->noMemory();
|
||||||
m_vLockSurfaces.pop_back();
|
m_vLockSurfaces.pop_back();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,23 +47,21 @@ void CKeyboardShortcutsInhibitProtocol::destroyInhibitor(CKeyboardShortcutsInhib
|
||||||
|
|
||||||
void CKeyboardShortcutsInhibitProtocol::onInhibit(CZwpKeyboardShortcutsInhibitManagerV1* pMgr, uint32_t id, wl_resource* surface, wl_resource* seat) {
|
void CKeyboardShortcutsInhibitProtocol::onInhibit(CZwpKeyboardShortcutsInhibitManagerV1* pMgr, uint32_t id, wl_resource* surface, wl_resource* seat) {
|
||||||
wlr_surface* surf = wlr_surface_from_resource(surface);
|
wlr_surface* surf = wlr_surface_from_resource(surface);
|
||||||
const auto CLIENT = wl_resource_get_client(pMgr->resource());
|
const auto CLIENT = pMgr->client();
|
||||||
|
|
||||||
for (auto& in : m_vInhibitors) {
|
for (auto& in : m_vInhibitors) {
|
||||||
if (in->surface() != surf)
|
if (in->surface() != surf)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
wl_resource_post_error(pMgr->resource(), ZWP_KEYBOARD_SHORTCUTS_INHIBIT_MANAGER_V1_ERROR_ALREADY_INHIBITED, "Already inhibited for surface resource");
|
pMgr->error(ZWP_KEYBOARD_SHORTCUTS_INHIBIT_MANAGER_V1_ERROR_ALREADY_INHIBITED, "Already inhibited for surface resource");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto RESOURCE = m_vInhibitors
|
const auto RESOURCE =
|
||||||
.emplace_back(std::make_unique<CKeyboardShortcutsInhibitor>(
|
m_vInhibitors.emplace_back(std::make_unique<CKeyboardShortcutsInhibitor>(std::make_shared<CZwpKeyboardShortcutsInhibitorV1>(CLIENT, pMgr->version(), id), surf)).get();
|
||||||
std::make_shared<CZwpKeyboardShortcutsInhibitorV1>(CLIENT, wl_resource_get_version(pMgr->resource()), id), surf))
|
|
||||||
.get();
|
|
||||||
|
|
||||||
if (!RESOURCE->good()) {
|
if (!RESOURCE->good()) {
|
||||||
wl_resource_post_no_memory(pMgr->resource());
|
pMgr->noMemory();
|
||||||
m_vInhibitors.pop_back();
|
m_vInhibitors.pop_back();
|
||||||
LOGM(ERR, "Failed to create an inhibitor resource");
|
LOGM(ERR, "Failed to create an inhibitor resource");
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -13,21 +13,19 @@ void CTearingControlProtocol::bindManager(wl_client* client, void* data, uint32_
|
||||||
RESOURCE->setOnDestroy([this](CWpTearingControlManagerV1* p) { this->onManagerResourceDestroy(p->resource()); });
|
RESOURCE->setOnDestroy([this](CWpTearingControlManagerV1* p) { this->onManagerResourceDestroy(p->resource()); });
|
||||||
|
|
||||||
RESOURCE->setDestroy([this](CWpTearingControlManagerV1* pMgr) { this->onManagerResourceDestroy(pMgr->resource()); });
|
RESOURCE->setDestroy([this](CWpTearingControlManagerV1* pMgr) { this->onManagerResourceDestroy(pMgr->resource()); });
|
||||||
RESOURCE->setGetTearingControl([this](CWpTearingControlManagerV1* pMgr, uint32_t id, wl_resource* surface) {
|
RESOURCE->setGetTearingControl(
|
||||||
this->onGetController(wl_resource_get_client(pMgr->resource()), pMgr->resource(), id, wlr_surface_from_resource(surface));
|
[this](CWpTearingControlManagerV1* pMgr, uint32_t id, wl_resource* surface) { this->onGetController(pMgr->client(), pMgr, id, wlr_surface_from_resource(surface)); });
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CTearingControlProtocol::onManagerResourceDestroy(wl_resource* res) {
|
void CTearingControlProtocol::onManagerResourceDestroy(wl_resource* res) {
|
||||||
std::erase_if(m_vManagers, [&](const auto& other) { return other->resource() == res; });
|
std::erase_if(m_vManagers, [&](const auto& other) { return other->resource() == res; });
|
||||||
}
|
}
|
||||||
|
|
||||||
void CTearingControlProtocol::onGetController(wl_client* client, wl_resource* resource, uint32_t id, wlr_surface* surf) {
|
void CTearingControlProtocol::onGetController(wl_client* client, CWpTearingControlManagerV1* pMgr, uint32_t id, wlr_surface* surf) {
|
||||||
const auto CONTROLLER =
|
const auto CONTROLLER = m_vTearingControllers.emplace_back(std::make_unique<CTearingControl>(std::make_shared<CWpTearingControlV1>(client, pMgr->version(), id), surf)).get();
|
||||||
m_vTearingControllers.emplace_back(std::make_unique<CTearingControl>(std::make_shared<CWpTearingControlV1>(client, wl_resource_get_version(resource), id), surf)).get();
|
|
||||||
|
|
||||||
if (!CONTROLLER->good()) {
|
if (!CONTROLLER->good()) {
|
||||||
wl_resource_post_no_memory(resource);
|
pMgr->noMemory();
|
||||||
m_vTearingControllers.pop_back();
|
m_vTearingControllers.pop_back();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@ class CTearingControlProtocol : public IWaylandProtocol {
|
||||||
private:
|
private:
|
||||||
void onManagerResourceDestroy(wl_resource* res);
|
void onManagerResourceDestroy(wl_resource* res);
|
||||||
void onControllerDestroy(CTearingControl* control);
|
void onControllerDestroy(CTearingControl* control);
|
||||||
void onGetController(wl_client* client, wl_resource* resource, uint32_t id, wlr_surface* surf);
|
void onGetController(wl_client* client, CWpTearingControlManagerV1* pMgr, uint32_t id, wlr_surface* surf);
|
||||||
void onWindowDestroy(PHLWINDOW pWindow);
|
void onWindowDestroy(PHLWINDOW pWindow);
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -115,11 +115,11 @@ void CTextInputV3Protocol::destroyTextInput(CTextInputV3* input) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CTextInputV3Protocol::onGetTextInput(CZwpTextInputManagerV3* pMgr, uint32_t id, wl_resource* seat) {
|
void CTextInputV3Protocol::onGetTextInput(CZwpTextInputManagerV3* pMgr, uint32_t id, wl_resource* seat) {
|
||||||
const auto CLIENT = wl_resource_get_client(pMgr->resource());
|
const auto CLIENT = pMgr->client();
|
||||||
const auto RESOURCE = m_vTextInputs.emplace_back(std::make_shared<CTextInputV3>(std::make_shared<CZwpTextInputV3>(CLIENT, wl_resource_get_version(pMgr->resource()), id)));
|
const auto RESOURCE = m_vTextInputs.emplace_back(std::make_shared<CTextInputV3>(std::make_shared<CZwpTextInputV3>(CLIENT, pMgr->version(), id)));
|
||||||
|
|
||||||
if (!RESOURCE->good()) {
|
if (!RESOURCE->good()) {
|
||||||
wl_resource_post_no_memory(pMgr->resource());
|
pMgr->noMemory();
|
||||||
m_vTextInputs.pop_back();
|
m_vTextInputs.pop_back();
|
||||||
LOGM(ERR, "Failed to create a tiv3 resource");
|
LOGM(ERR, "Failed to create a tiv3 resource");
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -91,12 +91,11 @@ void CXDGActivationProtocol::destroyToken(CXDGActivationToken* token) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CXDGActivationProtocol::onGetToken(CXdgActivationV1* pMgr, uint32_t id) {
|
void CXDGActivationProtocol::onGetToken(CXdgActivationV1* pMgr, uint32_t id) {
|
||||||
const auto CLIENT = wl_resource_get_client(pMgr->resource());
|
const auto CLIENT = pMgr->client();
|
||||||
const auto RESOURCE =
|
const auto RESOURCE = m_vTokens.emplace_back(std::make_unique<CXDGActivationToken>(std::make_shared<CXdgActivationTokenV1>(CLIENT, pMgr->version(), id))).get();
|
||||||
m_vTokens.emplace_back(std::make_unique<CXDGActivationToken>(std::make_shared<CXdgActivationTokenV1>(CLIENT, wl_resource_get_version(pMgr->resource()), id))).get();
|
|
||||||
|
|
||||||
if (!RESOURCE->good()) {
|
if (!RESOURCE->good()) {
|
||||||
wl_resource_post_no_memory(pMgr->resource());
|
pMgr->noMemory();
|
||||||
m_vTokens.pop_back();
|
m_vTokens.pop_back();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,18 +58,17 @@ void CXDGDecorationProtocol::destroyDecoration(CXDGDecoration* decoration) {
|
||||||
|
|
||||||
void CXDGDecorationProtocol::onGetDecoration(CZxdgDecorationManagerV1* pMgr, uint32_t id, wl_resource* xdgToplevel) {
|
void CXDGDecorationProtocol::onGetDecoration(CZxdgDecorationManagerV1* pMgr, uint32_t id, wl_resource* xdgToplevel) {
|
||||||
if (m_mDecorations.contains(xdgToplevel)) {
|
if (m_mDecorations.contains(xdgToplevel)) {
|
||||||
wl_resource_post_error(pMgr->resource(), ZXDG_TOPLEVEL_DECORATION_V1_ERROR_ALREADY_CONSTRUCTED, "Decoration object already exists");
|
pMgr->error(ZXDG_TOPLEVEL_DECORATION_V1_ERROR_ALREADY_CONSTRUCTED, "Decoration object already exists");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto CLIENT = wl_resource_get_client(pMgr->resource());
|
const auto CLIENT = pMgr->client();
|
||||||
const auto RESOURCE =
|
const auto RESOURCE =
|
||||||
m_mDecorations
|
m_mDecorations.emplace(xdgToplevel, std::make_unique<CXDGDecoration>(std::make_shared<CZxdgToplevelDecorationV1>(CLIENT, pMgr->version(), id), xdgToplevel))
|
||||||
.emplace(xdgToplevel, std::make_unique<CXDGDecoration>(std::make_shared<CZxdgToplevelDecorationV1>(CLIENT, wl_resource_get_version(pMgr->resource()), id), xdgToplevel))
|
|
||||||
.first->second.get();
|
.first->second.get();
|
||||||
|
|
||||||
if (!RESOURCE->good()) {
|
if (!RESOURCE->good()) {
|
||||||
wl_resource_post_no_memory(pMgr->resource());
|
pMgr->noMemory();
|
||||||
m_mDecorations.erase(xdgToplevel);
|
m_mDecorations.erase(xdgToplevel);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,10 +51,9 @@ void CXDGOutputProtocol::onManagerGetXDGOutput(CZxdgOutputManagerV1* mgr, uint32
|
||||||
|
|
||||||
const auto PMONITOR = g_pCompositor->getMonitorFromOutput(OUTPUT);
|
const auto PMONITOR = g_pCompositor->getMonitorFromOutput(OUTPUT);
|
||||||
|
|
||||||
const auto CLIENT = wl_resource_get_client(mgr->resource());
|
const auto CLIENT = mgr->client();
|
||||||
|
|
||||||
CXDGOutput* pXDGOutput =
|
CXDGOutput* pXDGOutput = m_vXDGOutputs.emplace_back(std::make_unique<CXDGOutput>(std::make_shared<CZxdgOutputV1>(CLIENT, mgr->version(), id), PMONITOR)).get();
|
||||||
m_vXDGOutputs.emplace_back(std::make_unique<CXDGOutput>(std::make_shared<CZxdgOutputV1>(CLIENT, wl_resource_get_version(mgr->resource()), id), PMONITOR)).get();
|
|
||||||
#ifndef NO_XWAYLAND
|
#ifndef NO_XWAYLAND
|
||||||
if (g_pXWaylandManager->m_sWLRXWayland && g_pXWaylandManager->m_sWLRXWayland->server && g_pXWaylandManager->m_sWLRXWayland->server->client == CLIENT)
|
if (g_pXWaylandManager->m_sWLRXWayland && g_pXWaylandManager->m_sWLRXWayland->server && g_pXWaylandManager->m_sWLRXWayland->server->client == CLIENT)
|
||||||
pXDGOutput->isXWayland = true;
|
pXDGOutput->isXWayland = true;
|
||||||
|
@ -63,14 +62,14 @@ void CXDGOutputProtocol::onManagerGetXDGOutput(CZxdgOutputManagerV1* mgr, uint32
|
||||||
|
|
||||||
if (!pXDGOutput->resource->resource()) {
|
if (!pXDGOutput->resource->resource()) {
|
||||||
m_vXDGOutputs.pop_back();
|
m_vXDGOutputs.pop_back();
|
||||||
wl_resource_post_no_memory(mgr->resource());
|
mgr->noMemory();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!PMONITOR)
|
if (!PMONITOR)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const auto XDGVER = wl_resource_get_version(pXDGOutput->resource->resource());
|
const auto XDGVER = pXDGOutput->resource->version();
|
||||||
|
|
||||||
if (XDGVER >= OUTPUT_NAME_SINCE_VERSION)
|
if (XDGVER >= OUTPUT_NAME_SINCE_VERSION)
|
||||||
pXDGOutput->resource->sendName(PMONITOR->szName.c_str());
|
pXDGOutput->resource->sendName(PMONITOR->szName.c_str());
|
||||||
|
@ -120,6 +119,6 @@ void CXDGOutput::sendDetails() {
|
||||||
else
|
else
|
||||||
resource->sendLogicalSize(monitor->vecSize.x, monitor->vecSize.y);
|
resource->sendLogicalSize(monitor->vecSize.x, monitor->vecSize.y);
|
||||||
|
|
||||||
if (wl_resource_get_version(resource->resource()) < OUTPUT_DONE_DEPRECATED_SINCE_VERSION)
|
if (resource->version() < OUTPUT_DONE_DEPRECATED_SINCE_VERSION)
|
||||||
resource->sendDone();
|
resource->sendDone();
|
||||||
}
|
}
|
Loading…
Reference in a new issue