kdeui: log KPixmap and KSelectionOwner debug/warning messages to the kdeui (kdelibs) debug area

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2022-11-09 02:28:14 +02:00
parent a5734faf0f
commit a4c80f09d2
3 changed files with 25 additions and 19 deletions

View file

@ -66,7 +66,7 @@ KPixmap::KPixmap(const Qt::HANDLE pixmap)
);
d->size = QSize(x11width, x11height);
if (kx11errorhandler.error(true)) {
kWarning() << KXErrorHandler::errorMessage(kx11errorhandler.errorEvent());
kWarning(240) << KXErrorHandler::errorMessage(kx11errorhandler.errorEvent());
// in the worst case the pixmap will be leaked
d->handle = XNone;
d->size = QSize();
@ -81,7 +81,7 @@ KPixmap::KPixmap(const QPixmap &pixmap)
KXErrorHandler kx11errorhandler;
d->handle = XCreatePixmap(QX11Info::display(), QX11Info::appRootWindow(), pixmap.width(), pixmap.height(), 32);
if (kx11errorhandler.error(true)) {
kWarning() << KXErrorHandler::errorMessage(kx11errorhandler.errorEvent());
kWarning(240) << KXErrorHandler::errorMessage(kx11errorhandler.errorEvent());
d->handle = XNone;
return;
}
@ -107,7 +107,7 @@ KPixmap::KPixmap(const QSize &size)
KXErrorHandler kx11errorhandler;
d->handle = XCreatePixmap(QX11Info::display(), QX11Info::appRootWindow(), size.width(), size.height(), 32);
if (kx11errorhandler.error(true)) {
kWarning() << KXErrorHandler::errorMessage(kx11errorhandler.errorEvent());
kWarning(240) << KXErrorHandler::errorMessage(kx11errorhandler.errorEvent());
d->handle = XNone;
return;
}
@ -142,14 +142,14 @@ Qt::HANDLE KPixmap::handle() const
void KPixmap::release()
{
if (d->handle == XNone) {
kDebug() << "No handle";
kDebug(240) << "No handle";
return;
}
// NOTE: catching errors here is done to not get fatal I/O
KXErrorHandler kx11errorhandler;
XFreePixmap(QX11Info::display(), d->handle);
if (kx11errorhandler.error(true)) {
kWarning() << KXErrorHandler::errorMessage(kx11errorhandler.errorEvent());
kWarning(240) << KXErrorHandler::errorMessage(kx11errorhandler.errorEvent());
}
d->handle = XNone;
d->size = QSize();
@ -157,6 +157,10 @@ void KPixmap::release()
QImage KPixmap::toImage() const
{
if (isNull()) {
kWarning(240) << "Null pixmap";
return QImage();
}
// TODO: optimize
return QPixmap::fromX11Pixmap(d->handle).toImage();
}
@ -166,4 +170,4 @@ KPixmap& KPixmap::operator=(const KPixmap &other)
delete d;
d = new KPixmapPrivate(*other.d);
return *this;
}
}

View file

@ -28,6 +28,8 @@ class KPixmapPrivate;
/*!
Class to deal with X11 pixmaps.
@since 4.22
*/
class KDEUI_EXPORT KPixmap
{

View file

@ -68,7 +68,7 @@ KSelectionOwner::~KSelectionOwner()
Window KSelectionOwner::ownerWindow() const
{
kDebug() << "Current selection owner is" << d->x11window;
kDebug(240) << "Current selection owner is" << d->x11window;
return d->x11window;
}
@ -76,15 +76,15 @@ bool KSelectionOwner::claim(const bool force)
{
Window currentowner = XGetSelectionOwner(d->x11display, d->x11atom);
if (currentowner != None && !force) {
kDebug() << "Selection is owned";
kDebug(240) << "Selection is owned";
return false;
}
if (currentowner != None) {
kDebug() << "Selection is owned, clearing owner";
kDebug(240) << "Selection is owned, clearing owner";
XSetSelectionOwner(d->x11display, d->x11atom, None, CurrentTime);
XFlush(d->x11display);
ushort counter = 0;
kDebug() << "Waiting for owner";
kDebug(240) << "Waiting for owner";
while (currentowner != None && counter < 10) {
currentowner = XGetSelectionOwner(d->x11display, d->x11atom);
QCoreApplication::processEvents(QEventLoop::AllEvents, KSELECTIONOWNER_TIMEOUT);
@ -93,16 +93,16 @@ bool KSelectionOwner::claim(const bool force)
}
}
if (currentowner != None) {
kDebug() << "Selection is owned, killing owner";
kDebug(240) << "Selection is owned, killing owner";
KXErrorHandler kx11errorhandler;
XKillClient(d->x11display, currentowner);
XFlush(d->x11display);
if (kx11errorhandler.error(true)) {
kWarning() << KXErrorHandler::errorMessage(kx11errorhandler.errorEvent());
kWarning(240) << KXErrorHandler::errorMessage(kx11errorhandler.errorEvent());
return false;
}
}
kDebug() << "Creating selection owner";
kDebug(240) << "Creating selection owner";
KXErrorHandler kx11errorhandler;
d->x11window = XCreateSimpleWindow(
d->x11display, RootWindow(d->x11display, d->x11screen),
@ -111,7 +111,7 @@ bool KSelectionOwner::claim(const bool force)
0, 0, 0 // border width, border and background pixels
);
if (kx11errorhandler.error(true)) {
kWarning() << KXErrorHandler::errorMessage(kx11errorhandler.errorEvent());
kWarning(240) << KXErrorHandler::errorMessage(kx11errorhandler.errorEvent());
return false;
}
XSetSelectionOwner(d->x11display, d->x11atom, d->x11window, CurrentTime);
@ -123,14 +123,14 @@ bool KSelectionOwner::claim(const bool force)
void KSelectionOwner::release()
{
if (d->x11window == None) {
kDebug() << "No owner";
kDebug(240) << "No owner";
return;
}
if (d->timerid > 0) {
killTimer(d->timerid);
d->timerid = 0;
}
kDebug() << "Destroying owner window";
kDebug(240) << "Destroying owner window";
XDestroyWindow(d->x11display, d->x11window);
XFlush(d->x11display);
d->x11window = None;
@ -139,11 +139,11 @@ void KSelectionOwner::release()
void KSelectionOwner::timerEvent(QTimerEvent *event)
{
if (event->timerId() == d->timerid) {
// kDebug() << "Checking selection owner for" << XGetAtomName(d->x11display, d->x11atom);
// kDebug(240) << "Checking selection owner for" << XGetAtomName(d->x11display, d->x11atom);
Q_ASSERT(d->x11window != None);
Window currentowner = XGetSelectionOwner(d->x11display, d->x11atom);
if (currentowner != d->x11window) {
kDebug() << "Selection owner changed";
kDebug(240) << "Selection owner changed";
killTimer(d->timerid);
d->timerid = 0;
emit lostOwnership();
@ -153,7 +153,7 @@ void KSelectionOwner::timerEvent(QTimerEvent *event)
XFlush(d->x11display);
d->x11window = None;
if (kx11errorhandler.error(true)) {
kDebug() << KXErrorHandler::errorMessage(kx11errorhandler.errorEvent());
kDebug(240) << KXErrorHandler::errorMessage(kx11errorhandler.errorEvent());
}
}
event->accept();