mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-10-17 07:26:00 +00:00
internal: optimize cursor move a bit (#8264)
* window: inline and const getWindowMainSurfaceBox getWindowMainSurfaceBox gets called a lot of times from deep down from mousemoveunified, profiling mousemoveunified it spends quite a lot of cpu time in here, let the compiler optimize the call to getWindowMainSurfaceBox by inlining and making it const. reducing the overhead. * inputmgr: return early and use std::any_of return early in mousemoveunified to reduce the amount of unnecessery calls to various pointers when not needed, also make isconstrained use std::any_of instead of for loop to use the STL optimized paths with hopes and dreams marginally faster. * decoration: return early, reduce temporar copy return earlier and reduce the temp copies by using one .lock instead of two
This commit is contained in:
@@ -297,15 +297,16 @@ SBoxExtents CDecorationPositioner::getWindowDecorationExtents(PHLWINDOW pWindow,
|
||||
CBox accum = pWindow->getWindowMainSurfaceBox();
|
||||
|
||||
for (auto const& data : m_vWindowPositioningDatas) {
|
||||
if (data->pWindow.lock() != pWindow)
|
||||
continue;
|
||||
|
||||
if (!data->pWindow.lock() || !data->pDecoration)
|
||||
if (!data->pDecoration)
|
||||
continue;
|
||||
|
||||
if (!(data->pDecoration->getDecorationFlags() & DECORATION_ALLOWS_MOUSE_INPUT) && inputOnly)
|
||||
continue;
|
||||
|
||||
auto const window = data->pWindow.lock();
|
||||
if (!window || window != pWindow)
|
||||
continue;
|
||||
|
||||
CBox decoBox;
|
||||
|
||||
if (data->positioningInfo.policy == DECORATION_POSITION_ABSOLUTE) {
|
||||
@@ -373,9 +374,10 @@ CBox CDecorationPositioner::getBoxWithIncludedDecos(PHLWINDOW pWindow) {
|
||||
}
|
||||
|
||||
CBox CDecorationPositioner::getWindowDecorationBox(IHyprWindowDecoration* deco) {
|
||||
const auto DATA = getDataFor(deco, deco->m_pWindow.lock());
|
||||
auto const window = deco->m_pWindow.lock();
|
||||
const auto DATA = getDataFor(deco, window);
|
||||
|
||||
CBox box = DATA->lastReply.assignedGeometry;
|
||||
box.translate(getEdgeDefinedPoint(DATA->positioningInfo.edges, deco->m_pWindow.lock()));
|
||||
box.translate(getEdgeDefinedPoint(DATA->positioningInfo.edges, window));
|
||||
return box;
|
||||
}
|
||||
|
Reference in New Issue
Block a user