mirror of
https://github.com/virtcode/hypr-dynamic-cursors
synced 2025-09-19 08:03:21 +02:00
parent
90cb505bfe
commit
461f9a3fd2
3 changed files with 7 additions and 7 deletions
|
@ -60,7 +60,7 @@ CDynamicCursors::~CDynamicCursors() {
|
|||
Reimplements rendering of the software cursor.
|
||||
Is also largely identical to hyprlands impl, but uses our custom rendering to rotate the cursor.
|
||||
*/
|
||||
void CDynamicCursors::renderSoftware(CPointerManager* pointers, SP<CMonitor> pMonitor, const Time::steady_tp& now, CRegion& damage, std::optional<Vector2D> overridePos) {
|
||||
void CDynamicCursors::renderSoftware(CPointerManager* pointers, SP<CMonitor> pMonitor, const Time::steady_tp& now, CRegion& damage, std::optional<Vector2D> overridePos, bool forceRender) {
|
||||
static auto* const* PNEAREST = (Hyprlang::INT* const*) getConfig(CONFIG_HIGHRES_NEAREST);
|
||||
|
||||
if (!pointers->hasCursor())
|
||||
|
@ -69,7 +69,7 @@ void CDynamicCursors::renderSoftware(CPointerManager* pointers, SP<CMonitor> pMo
|
|||
auto state = pointers->stateFor(pMonitor);
|
||||
auto zoom = resultShown.scale;
|
||||
|
||||
if ((!state->hardwareFailed && state->softwareLocks <= 0)) {
|
||||
if (!state->hardwareFailed && state->softwareLocks <= 0 && !forceRender) {
|
||||
if (pointers->currentCursorImage.surface)
|
||||
pointers->currentCursorImage.surface->resource()->frame(now);
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ class CDynamicCursors {
|
|||
void onTick(CPointerManager* pointers);
|
||||
|
||||
/* hook on renderSoftwareCursorsFor */
|
||||
void renderSoftware(CPointerManager* pointers, SP<CMonitor> pMonitor, const Time::steady_tp& now, CRegion& damage, std::optional<Vector2D> overridePos);
|
||||
void renderSoftware(CPointerManager* pointers, SP<CMonitor> pMonitor, const Time::steady_tp& now, CRegion& damage, std::optional<Vector2D> overridePos, bool forceRender);
|
||||
/* hook on damageIfSoftware*/
|
||||
void damageSoftware(CPointerManager* pointers);
|
||||
/* hook on renderHWCursorBuffer */
|
||||
|
|
|
@ -17,11 +17,11 @@
|
|||
#include "src/managers/PointerManager.hpp"
|
||||
#include "src/version.h"
|
||||
|
||||
typedef void (*origRenderSofwareCursorsFor)(void*, SP<CMonitor>, const Time::steady_tp&, CRegion&, std::optional<Vector2D>);
|
||||
typedef void (*origRenderSofwareCursorsFor)(void*, SP<CMonitor>, const Time::steady_tp&, CRegion&, std::optional<Vector2D>, bool);
|
||||
inline CFunctionHook* g_pRenderSoftwareCursorsForHook = nullptr;
|
||||
void hkRenderSoftwareCursorsFor(void* thisptr, SP<CMonitor> pMonitor, const Time::steady_tp& now, CRegion& damage, std::optional<Vector2D> overridePos) {
|
||||
if (isEnabled()) g_pDynamicCursors->renderSoftware((CPointerManager*) thisptr, pMonitor, now, damage, overridePos);
|
||||
else (*(origRenderSofwareCursorsFor)g_pRenderSoftwareCursorsForHook->m_pOriginal)(thisptr, pMonitor, now, damage, overridePos);
|
||||
void hkRenderSoftwareCursorsFor(void* thisptr, SP<CMonitor> pMonitor, const Time::steady_tp& now, CRegion& damage, std::optional<Vector2D> overridePos, bool forceRender) {
|
||||
if (isEnabled()) g_pDynamicCursors->renderSoftware((CPointerManager*) thisptr, pMonitor, now, damage, overridePos, forceRender);
|
||||
else (*(origRenderSofwareCursorsFor)g_pRenderSoftwareCursorsForHook->m_pOriginal)(thisptr, pMonitor, now, damage, overridePos, forceRender);
|
||||
}
|
||||
|
||||
typedef void (*origDamageIfSoftware)(void*);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue