KDEAmbi/hgx11damage.cpp
Tobias J. Endres 8ff291c4b4 feat: Add debug logging to hgx11damage.cpp
Added qDebug() statements to trace the execution flow and print out important values in the damage monitoring thread.
This will help to identify if X11 damage events are being received.
2025-08-14 01:25:50 +02:00

48 lines
1.2 KiB
C++

#include "hgx11damage.h"
// public
hgx11damage::hgx11damage(QWaitCondition * grabbed, unsigned short frameSkip)
{
_grabbed_p = grabbed;
_frameSkip_m = frameSkip;
_display_p = XOpenDisplay(nullptr);
if(_display_p == nullptr){
qCritical() << "Failed to open X11 display";
return;
}
_damage_m = XDamageCreate(_display_p, DefaultRootWindow(_display_p), XDamageReportNonEmpty);
}
hgx11damage::~hgx11damage()
{
_loop_m = false;
if (_damage_m) {
XDamageDestroy(_display_p, _damage_m);
}
}
// protected
void hgx11damage::_monitor()
{
if(_display_p == nullptr){
return;
}
qDebug() << "Monitoring for X11 damage events.";
while (_loop_m) {
XNextEvent(_display_p, &_event_m);
qDebug() << "X11 event received:" << _event_m.type;
if (_frameCount_m++ < _frameSkip_m) {
XDamageSubtract(_display_p ,_damage_m, None, None);
continue;
}
_mutex_m.lock();
emit damageDetected();
_grabbed_p->wait(&_mutex_m);
_mutex_m.unlock();
XDamageSubtract(_display_p ,_damage_m, None, None);
_frameCount_m = 0;
}
}