diff --git a/data/org_kde_kwin.categories b/data/org_kde_kwin.categories index 9fa463923b..6f909fc591 100644 --- a/data/org_kde_kwin.categories +++ b/data/org_kde_kwin.categories @@ -1,5 +1,8 @@ kwin_core KWin Core kwineffects KWin Effects +libkwineffects KWin Effects Library +libkwinglutils KWin OpenGL utility Library +libkwinxrenderutils KWin XRender utility Library kwin_wayland_drm KWin Wayland (DRM backend) kwin_wayland_framebuffer KWin Wayland (Framebuffer backend) kwin_wayland_hwcomposer KWin Wayland (hwcomposer backend) diff --git a/libkwineffects/CMakeLists.txt b/libkwineffects/CMakeLists.txt index a9cafae7a7..0a369c6e0f 100644 --- a/libkwineffects/CMakeLists.txt +++ b/libkwineffects/CMakeLists.txt @@ -11,6 +11,7 @@ ecm_setup_version(${PROJECT_VERSION} ### xrenderutils lib ### set(kwin_XRENDERUTILS_SRCS kwinxrenderutils.cpp + logging.cpp ) add_library(kwinxrenderutils SHARED ${kwin_XRENDERUTILS_SRCS}) @@ -37,6 +38,7 @@ set(kwin_EFFECTSLIB_SRCS kwineffects.cpp anidata.cpp kwinanimationeffect.cpp + logging.cpp ) set(kwineffects_QT_LIBS @@ -81,6 +83,7 @@ set(kwin_GLUTILSLIB_SRCS kwinglutils_funcs.cpp kwinglplatform.cpp kwinglcolorcorrection.cpp + logging.cpp ) macro( KWIN4_ADD_GLUTILS_BACKEND name glinclude ) diff --git a/libkwineffects/anidata.cpp b/libkwineffects/anidata.cpp index 2b78a7acd6..81ad9765d1 100644 --- a/libkwineffects/anidata.cpp +++ b/libkwineffects/anidata.cpp @@ -20,7 +20,7 @@ along with this program. If not, see . #include "anidata_p.h" -#include +#include "logging_p.h" QDebug operator<<(QDebug dbg, const KWin::AniData &a) { @@ -80,7 +80,7 @@ static FPx2 fpx2(const QString &s, AnimationEffect::Attribute a) a == AnimationEffect::Size || a == AnimationEffect::Rotation)) ) { if (ok) - qDebug() << "Invalid value (must not be negative)" << s; + qCDebug(LIBKWINEFFECTS) << "Invalid value (must not be negative)" << s; return FPx2(); } @@ -96,7 +96,7 @@ static FPx2 fpx2(const QString &s, AnimationEffect::Attribute a) f2 = f1; } if ( forced_align && a >= AnimationEffect::NonFloatBase ) - qDebug() << "Generic Animations, WARNING: had to align second dimension of non-onedimensional attribute" << a; + qCDebug(LIBKWINEFFECTS) << "Generic Animations, WARNING: had to align second dimension of non-onedimensional attribute" << a; return FPx2(f1, f2); } @@ -122,7 +122,7 @@ AniData::AniData(const QString &str) // format: WindowMask:Attribute:Meta:Durati else if (animation.at(1) == QStringLiteral("Size")) attribute = AnimationEffect::Size; else if (animation.at(1) == QStringLiteral("Clip")) attribute = AnimationEffect::Clip; else { - qDebug() << "Invalid attribute" << animation.at(1); + qCDebug(LIBKWINEFFECTS) << "Invalid attribute" << animation.at(1); return; } @@ -131,7 +131,7 @@ AniData::AniData(const QString &str) // format: WindowMask:Attribute:Meta:Durati bool ok; duration = animation.at(3).toInt(&ok); if (!ok || duration < 0) { - qDebug() << "Invalid duration" << animation.at(3); + qCDebug(LIBKWINEFFECTS) << "Invalid duration" << animation.at(3); duration = 0; return; } @@ -145,12 +145,12 @@ AniData::AniData(const QString &str) // format: WindowMask:Attribute:Meta:Durati else if (customCurve == Gaussian) curve.setCustomType(AnimationEffect::qecGaussian); else - qDebug() << "Unknown curve type" << customCurve; // remains default, ie. linear + qCDebug(LIBKWINEFFECTS) << "Unknown curve type" << customCurve; // remains default, ie. linear if (animation.count() > 6) { int t = animation.at(6).toInt(); if (t < 0) - qDebug() << "Delay can not be negative" << animation.at(6); + qCDebug(LIBKWINEFFECTS) << "Delay can not be negative" << animation.at(6); else time = t; diff --git a/libkwineffects/kwinglcolorcorrection.cpp b/libkwineffects/kwinglcolorcorrection.cpp index 97382746c8..7305f0e3e7 100644 --- a/libkwineffects/kwinglcolorcorrection.cpp +++ b/libkwineffects/kwinglcolorcorrection.cpp @@ -23,13 +23,13 @@ along with this program. If not, see . #include "kwinglplatform.h" #include "kwinglutils.h" +#include "logging_p.h" #include #include #include #include #include -#include #include #include @@ -101,7 +101,7 @@ ColorServerInterface::~ColorServerInterface() uint ColorServerInterface::versionInfo() const { if (!m_versionInfoUpdated) - qWarning() << "Version info not updated"; + qCWarning(LIBKWINGLUTILS) << "Version info not updated"; return m_versionInfo; } @@ -154,10 +154,10 @@ QDBusPendingReply< RegionalClutMap > ColorServerInterface::getRegionCluts() void ColorServerInterface::callFinishedSlot(QDBusPendingCallWatcher *watcher) { if (watcher == m_versionInfoWatcher) { - qDebug() << "Version info call finished"; + qCDebug(LIBKWINGLUTILS) << "Version info call finished"; QDBusPendingReply< uint > reply = *watcher; if (reply.isError()) { - qWarning() << reply.error(); + qCWarning(LIBKWINGLUTILS) << reply.error(); if (!m_signaledFail) emit updateFailed(); m_signaledFail = true; @@ -169,10 +169,10 @@ void ColorServerInterface::callFinishedSlot(QDBusPendingCallWatcher *watcher) } if (watcher == m_outputClutsWatcher) { - qDebug() << "Output cluts call finished"; + qCDebug(LIBKWINGLUTILS) << "Output cluts call finished"; QDBusPendingReply< ClutList > reply = *watcher; if (reply.isError()) { - qWarning() << reply.error(); + qCWarning(LIBKWINGLUTILS) << reply.error(); if (!m_signaledFail) emit updateFailed(); m_signaledFail = true; @@ -184,10 +184,10 @@ void ColorServerInterface::callFinishedSlot(QDBusPendingCallWatcher *watcher) } if (watcher == m_regionClutsWatcher) { - qDebug() << "Region cluts call finished"; + qCDebug(LIBKWINGLUTILS) << "Region cluts call finished"; QDBusPendingReply< RegionalClutMap > reply = *watcher; if (reply.isError()) { - qWarning() << reply.error(); + qCWarning(LIBKWINGLUTILS) << reply.error(); if (!m_signaledFail) emit updateFailed(); m_signaledFail = true; @@ -201,7 +201,7 @@ void ColorServerInterface::callFinishedSlot(QDBusPendingCallWatcher *watcher) if (m_versionInfoUpdated && m_outputClutsUpdated && m_regionClutsUpdated) { - qDebug() << "Update succeeded"; + qCDebug(LIBKWINGLUTILS) << "Update succeeded"; emit updateSucceeded(); } } @@ -284,14 +284,14 @@ bool ColorCorrection::setEnabled(bool enabled) return true; if (enabled && d->m_hasError) { - qCritical() << "cannot enable color correction because of a previous error"; + qCCritical(LIBKWINGLUTILS) << "cannot enable color correction because of a previous error"; return false; } #ifdef KWIN_HAVE_OPENGLES const GLPlatform *gl = GLPlatform::instance(); if (enabled && gl->isGLES() && !d->m_haveTexture3D) { - qCritical() << "color correction is not supported on OpenGL ES without OES_texture_3D"; + qCCritical(LIBKWINGLUTILS) << "color correction is not supported on OpenGL ES without OES_texture_3D"; d->m_hasError = true; return false; } @@ -300,14 +300,14 @@ bool ColorCorrection::setEnabled(bool enabled) if (enabled) { // Update all profiles and regions d->m_csi->update(); - qDebug() << "color correction will be enabled after contacting KolorManager"; + qCDebug(LIBKWINGLUTILS) << "color correction will be enabled after contacting KolorManager"; d->m_duringEnablingPhase = true; // d->m_enabled will be set to true in colorServerUpdateSucceededSlot() } else { d->deleteCCTextures(); d->m_enabled = false; GLShader::sColorCorrect = false; - qDebug() << "color correction has been disabled"; + qCDebug(LIBKWINGLUTILS) << "color correction has been disabled"; // Reload all shaders ShaderManager::cleanup(); @@ -326,7 +326,7 @@ void ColorCorrection::setupForOutput(int screen) GLShader *shader = ShaderManager::instance()->getBoundShader(); if (!shader) { - qCritical() << "no bound shader for color correction setup"; + qCCritical(LIBKWINGLUTILS) << "no bound shader for color correction setup"; d->m_hasError = true; emit errorOccured(); return; @@ -339,14 +339,14 @@ void ColorCorrection::setupForOutput(int screen) } if (!shader->setUniform(GLShader::ColorCorrectionLookupTextureUnit, d->m_ccTextureUnit)) { - qCritical() << "unable to set uniform for the color correction lookup texture"; + qCCritical(LIBKWINGLUTILS) << "unable to set uniform for the color correction lookup texture"; d->m_hasError = true; emit errorOccured(); return; } if (!d->setupCCTextures()) { - qCritical() << "unable to setup color correction textures"; + qCCritical(LIBKWINGLUTILS) << "unable to setup color correction textures"; d->m_hasError = true; emit errorOccured(); return; @@ -556,7 +556,7 @@ QByteArray ColorCorrection::prepareFragmentShader(const QByteArray &sourceCode) bool ColorCorrectionPrivate::setupCCTextures() { if (!m_enabled || m_hasError) { - qWarning() << "Color correction not enabled or an error occurred, refusing to set up textures"; + qCWarning(LIBKWINGLUTILS) << "Color correction not enabled or an error occurred, refusing to set up textures"; return false; } @@ -564,7 +564,7 @@ bool ColorCorrectionPrivate::setupCCTextures() if (!m_dummyCCTexture) { glGenTextures(1, &m_dummyCCTexture); if (!setupCCTexture(m_dummyCCTexture, m_dummyClut)) { - qCritical() << "unable to setup dummy color correction texture"; + qCCritical(LIBKWINGLUTILS) << "unable to setup dummy color correction texture"; m_dummyCCTexture = 0; return false; } @@ -574,7 +574,7 @@ bool ColorCorrectionPrivate::setupCCTextures() // Setup actual color correction textures if (m_outputCCTextures.isEmpty() && !m_outputCluts->isEmpty()) { - qDebug() << "setting up output color correction textures"; + qCDebug(LIBKWINGLUTILS) << "setting up output color correction textures"; const int outputCount = m_outputCluts->size(); m_outputCCTextures.resize(outputCount); @@ -582,7 +582,7 @@ bool ColorCorrectionPrivate::setupCCTextures() for (int i = 0; i < outputCount; ++i) if (!setupCCTexture(m_outputCCTextures[i], m_outputCluts->at(i))) { - qCritical() << "unable to set up color correction texture for output" << i; + qCCritical(LIBKWINGLUTILS) << "unable to set up color correction texture for output" << i; success = false; } } @@ -608,7 +608,7 @@ void ColorCorrectionPrivate::deleteCCTextures() bool ColorCorrectionPrivate::setupCCTexture(GLuint texture, const Clut& clut) { if ((uint) clut.size() != CLUT_ELEMENT_COUNT) { - qCritical() << "cannot setup CC texture: invalid color lookup table"; + qCCritical(LIBKWINGLUTILS) << "cannot setup CC texture: invalid color lookup table"; return false; } @@ -647,7 +647,7 @@ void ColorCorrectionPrivate::colorServerUpdateSucceededSlot() { Q_Q(ColorCorrection); - qDebug() << "Update of color profiles succeeded"; + qCDebug(LIBKWINGLUTILS) << "Update of color profiles succeeded"; // Force the color correction textures to be recreated deleteCCTextures(); @@ -657,15 +657,15 @@ void ColorCorrectionPrivate::colorServerUpdateSucceededSlot() m_duringEnablingPhase = false; m_enabled = true; GLShader::sColorCorrect = true; - qDebug() << "Color correction has been enabled"; + qCDebug(LIBKWINGLUTILS) << "Color correction has been enabled"; // Reload all shaders ShaderManager::cleanup(); if (!ShaderManager::instance()->isValid()) { - qCritical() << "Shader reinitialization failed, possible compile problems with the shaders " + qCCritical(LIBKWINGLUTILS) << "Shader reinitialization failed, possible compile problems with the shaders " "altered for color-correction"; m_hasError = true; - qDebug() << "Color correction has been disabled due to shader issues"; + qCDebug(LIBKWINGLUTILS) << "Color correction has been disabled due to shader issues"; m_enabled = false; GLShader::sColorCorrect = false; ShaderManager::cleanup(); @@ -682,7 +682,7 @@ void ColorCorrectionPrivate::colorServerUpdateFailedSlot() m_duringEnablingPhase = false; - qCritical() << "Update of color profiles failed"; + qCCritical(LIBKWINGLUTILS) << "Update of color profiles failed"; m_hasError = true; emit q->errorOccured(); } diff --git a/libkwineffects/kwinglutils.cpp b/libkwineffects/kwinglutils.cpp index 0ad4739bf3..66634d6795 100644 --- a/libkwineffects/kwinglutils.cpp +++ b/libkwineffects/kwinglutils.cpp @@ -27,9 +27,9 @@ along with this program. If not, see . #include "kwinglcolorcorrection.h" #include "kwineffects.h" #include "kwinglplatform.h" +#include "logging_p.h" -#include #include #include #include @@ -193,7 +193,7 @@ bool checkGLError(const char* txt) GLenum err = glGetError(); bool hasError = false; while (err != GL_NO_ERROR) { - qWarning() << "GL error (" << txt << "): " << formatGLError(err); + qCWarning(LIBKWINGLUTILS) << "GL error (" << txt << "): " << formatGLError(err); hasError = true; err = glGetError(); } @@ -249,14 +249,14 @@ bool GLShader::loadFromFiles(const QString &vertexFile, const QString &fragmentF { QFile vf(vertexFile); if (!vf.open(QIODevice::ReadOnly)) { - qCritical() << "Couldn't open" << vertexFile << "for reading!"; + qCCritical(LIBKWINGLUTILS) << "Couldn't open" << vertexFile << "for reading!"; return false; } const QByteArray vertexSource = vf.readAll(); QFile ff(fragmentFile); if (!ff.open(QIODevice::ReadOnly)) { - qCritical() << "Couldn't open" << fragmentFile << "for reading!"; + qCCritical(LIBKWINGLUTILS) << "Couldn't open" << fragmentFile << "for reading!"; return false; } const QByteArray fragmentSource = ff.readAll(); @@ -283,10 +283,10 @@ bool GLShader::link() glGetProgramiv(mProgram, GL_LINK_STATUS, &status); if (status == 0) { - qCritical() << "Failed to link shader:" << endl << log; + qCCritical(LIBKWINGLUTILS) << "Failed to link shader:" << endl << log; mValid = false; } else if (length > 0) { - qDebug() << "Shader link log:" << log; + qCDebug(LIBKWINGLUTILS) << "Shader link log:" << log; } return mValid; @@ -342,9 +342,9 @@ bool GLShader::compile(GLuint program, GLenum shaderType, const QByteArray &sour if (status == 0) { const char *typeName = (shaderType == GL_VERTEX_SHADER ? "vertex" : "fragment"); - qCritical() << "Failed to compile" << typeName << "shader:" << endl << log; + qCCritical(LIBKWINGLUTILS) << "Failed to compile" << typeName << "shader:" << endl << log; } else if (length > 0) - qDebug() << "Shader compile log:" << log; + qCDebug(LIBKWINGLUTILS) << "Shader compile log:" << log; if (status != 0) glAttachShader(program, shader); @@ -358,7 +358,7 @@ bool GLShader::load(const QByteArray &vertexSource, const QByteArray &fragmentSo #ifndef KWIN_HAVE_OPENGLES // Make sure shaders are actually supported if (!GLPlatform::instance()->supports(GLSL) || GLPlatform::instance()->supports(LimitedNPOT)) { - qCritical() << "Shaders are not supported"; + qCCritical(LIBKWINGLUTILS) << "Shaders are not supported"; return false; } #endif @@ -706,7 +706,7 @@ bool ShaderManager::selfTest() bool pass = true; if (!GLRenderTarget::supported()) { - qWarning() << "Framebuffer objects not supported - skipping shader tests"; + qCWarning(LIBKWINGLUTILS) << "Framebuffer objects not supported - skipping shader tests"; return true; } @@ -992,11 +992,11 @@ GLShader *ShaderManager::generateShader(ShaderTraits traits) const QByteArray fragment = generateFragmentSource(traits); #if 0 - qDebug() << "**************"; - qDebug() << vertex; - qDebug() << "**************"; - qDebug() << fragment; - qDebug() << "**************"; + qCDebug(LIBKWINGLUTILS) << "**************"; + qCDebug(LIBKWINGLUTILS) << vertex; + qCDebug(LIBKWINGLUTILS) << "**************"; + qCDebug(LIBKWINGLUTILS) << fragment; + qCDebug(LIBKWINGLUTILS) << "**************"; #endif GLShader *shader = new GLShader(GLShader::ExplicitLinking); @@ -1356,7 +1356,7 @@ GLRenderTarget::GLRenderTarget(const GLTexture& color) if (sSupported && !mTexture.isNull()) { initFBO(); } else - qCritical() << "Render targets aren't supported!"; + qCCritical(LIBKWINGLUTILS) << "Render targets aren't supported!"; } GLRenderTarget::~GLRenderTarget() @@ -1369,7 +1369,7 @@ GLRenderTarget::~GLRenderTarget() bool GLRenderTarget::enable() { if (!valid()) { - qCritical() << "Can't enable invalid render target!"; + qCCritical(LIBKWINGLUTILS) << "Can't enable invalid render target!"; return false; } @@ -1383,7 +1383,7 @@ bool GLRenderTarget::enable() bool GLRenderTarget::disable() { if (!valid()) { - qCritical() << "Can't disable invalid render target!"; + qCCritical(LIBKWINGLUTILS) << "Can't disable invalid render target!"; return false; } @@ -1432,14 +1432,14 @@ void GLRenderTarget::initFBO() #if DEBUG_GLRENDERTARGET GLenum err = glGetError(); if (err != GL_NO_ERROR) - qCritical() << "Error status when entering GLRenderTarget::initFBO: " << formatGLError(err); + qCCritical(LIBKWINGLUTILS) << "Error status when entering GLRenderTarget::initFBO: " << formatGLError(err); #endif glGenFramebuffers(1, &mFramebuffer); #if DEBUG_GLRENDERTARGET if ((err = glGetError()) != GL_NO_ERROR) { - qCritical() << "glGenFramebuffers failed: " << formatGLError(err); + qCCritical(LIBKWINGLUTILS) << "glGenFramebuffers failed: " << formatGLError(err); return; } #endif @@ -1448,7 +1448,7 @@ void GLRenderTarget::initFBO() #if DEBUG_GLRENDERTARGET if ((err = glGetError()) != GL_NO_ERROR) { - qCritical() << "glBindFramebuffer failed: " << formatGLError(err); + qCCritical(LIBKWINGLUTILS) << "glBindFramebuffer failed: " << formatGLError(err); glDeleteFramebuffers(1, &mFramebuffer); return; } @@ -1459,7 +1459,7 @@ void GLRenderTarget::initFBO() #if DEBUG_GLRENDERTARGET if ((err = glGetError()) != GL_NO_ERROR) { - qCritical() << "glFramebufferTexture2D failed: " << formatGLError(err); + qCCritical(LIBKWINGLUTILS) << "glFramebufferTexture2D failed: " << formatGLError(err); glBindFramebuffer(GL_FRAMEBUFFER, 0); glDeleteFramebuffers(1, &mFramebuffer); return; @@ -1473,9 +1473,9 @@ void GLRenderTarget::initFBO() if (status != GL_FRAMEBUFFER_COMPLETE) { // We have an incomplete framebuffer, consider it invalid if (status == 0) - qCritical() << "glCheckFramebufferStatus failed: " << formatGLError(glGetError()); + qCCritical(LIBKWINGLUTILS) << "glCheckFramebufferStatus failed: " << formatGLError(glGetError()); else - qCritical() << "Invalid framebuffer status: " << formatFramebufferStatus(status); + qCCritical(LIBKWINGLUTILS) << "Invalid framebuffer status: " << formatFramebufferStatus(status); glDeleteFramebuffers(1, &mFramebuffer); return; } @@ -2120,11 +2120,11 @@ bool GLVertexBufferPrivate::awaitFence(intptr_t end) const BufferFence &fence = fences.front(); if (!fence.signaled()) { - qDebug() << "Stalling on VBO fence"; + qCDebug(LIBKWINGLUTILS) << "Stalling on VBO fence"; const GLenum ret = glClientWaitSync(fence.sync, GL_SYNC_FLUSH_COMMANDS_BIT, 1000000000); if (ret == GL_TIMEOUT_EXPIRED || ret == GL_WAIT_FAILED) { - qCritical() << "Wait failed"; + qCCritical(LIBKWINGLUTILS) << "Wait failed"; return false; } } diff --git a/libkwineffects/kwinxrenderutils.cpp b/libkwineffects/kwinxrenderutils.cpp index 7d96606135..da8c249905 100644 --- a/libkwineffects/kwinxrenderutils.cpp +++ b/libkwineffects/kwinxrenderutils.cpp @@ -19,8 +19,8 @@ along with this program. If not, see . *********************************************************************/ #include "kwinxrenderutils.h" +#include "logging_p.h" -#include #include #include #include @@ -113,7 +113,7 @@ static xcb_render_picture_t createPicture(xcb_pixmap_t pix, int depth) } QHash::const_iterator it = s_renderFormats.constFind(depth); if (it == s_renderFormats.constEnd()) { - qWarning() << "Could not find XRender format for depth" << depth; + qCWarning(LIBKWINXRENDERUTILS) << "Could not find XRender format for depth" << depth; return XCB_RENDER_PICTURE_NONE; } xcb_render_picture_t pic = xcb_generate_id(c); @@ -197,7 +197,7 @@ void setXRenderOffscreen(bool b) b ? ++s_renderOffscreen : --s_renderOffscreen; if (s_renderOffscreen < 0) { s_renderOffscreen = 0; - qWarning("*** SOMETHING IS MESSED UP WITH YOUR setXRenderOffscreen() USAGE ***"); + qCWarning(LIBKWINXRENDERUTILS) << "*** SOMETHING IS MESSED UP WITH YOUR setXRenderOffscreen() USAGE ***"; } } @@ -213,7 +213,7 @@ void xRenderPopTarget() --s_renderOffscreen; if (s_renderOffscreen < 0) { s_renderOffscreen = 0; - qWarning("*** SOMETHING IS MESSED UP WITH YOUR xRenderPopTarget() USAGE ***"); + qCWarning(LIBKWINXRENDERUTILS) << "*** SOMETHING IS MESSED UP WITH YOUR xRenderPopTarget() USAGE ***"; } } diff --git a/libkwineffects/logging.cpp b/libkwineffects/logging.cpp new file mode 100644 index 0000000000..b0c9a0167b --- /dev/null +++ b/libkwineffects/logging.cpp @@ -0,0 +1,23 @@ +/******************************************************************** + KWin - the KDE window manager + This file is part of the KDE project. + +Copyright (C) 2015 Martin Gräßlin + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*********************************************************************/ +#include "logging_p.h" +Q_LOGGING_CATEGORY(LIBKWINEFFECTS, "libkwineffects", QtCriticalMsg); +Q_LOGGING_CATEGORY(LIBKWINGLUTILS, "libkwinglutils", QtCriticalMsg); +Q_LOGGING_CATEGORY(LIBKWINXRENDERUTILS, "libkwinxrenderutils", QtCriticalMsg); diff --git a/libkwineffects/logging_p.h b/libkwineffects/logging_p.h new file mode 100644 index 0000000000..aed723be11 --- /dev/null +++ b/libkwineffects/logging_p.h @@ -0,0 +1,30 @@ +/******************************************************************** + KWin - the KDE window manager + This file is part of the KDE project. + +Copyright (C) 2015 Martin Gräßlin + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*********************************************************************/ +#ifndef KWIN_KWINEFFECTS_LOGGING_P_H +#define KWIN_KWINEFFECTS_LOGGING_P_H + +#include +#include + +Q_DECLARE_LOGGING_CATEGORY(LIBKWINEFFECTS); +Q_DECLARE_LOGGING_CATEGORY(LIBKWINGLUTILS); +Q_DECLARE_LOGGING_CATEGORY(LIBKWINXRENDERUTILS); + +#endif