Commit graph

12053 commits

Author SHA1 Message Date
Martin Gräßlin
4230a0d331 [effects] Get xcb_connection_t* and rootWindow through EffectsHandler API
So far the effects could just use the connection() and rootWindow()
provided by kwinglobals. Thus an internal detail from KWin core is
accessed directly.

To be more consistent with the rest of the API it's wrapped through the
EffectsHandler and with a convenient method in Effect.

The connection() is provided as xcbConnection() to free the very generic
name connection which could create confusion once we provide a wayland
connection to the Effects.

The rootWindow() is provided as x11RootWindow() to indicate that it is
for the X11 world.

REVIEW: 117597
2014-04-16 16:05:05 +02:00
Martin Gräßlin
93e5ebac63 Try to wait for DESTROY_NOTIFY before releasing an Unmanaged
So far the Unmanaged got released after an XCB_UNMAP_NOTIFY. This event
gets created after xcb_unmap_window or after xcb_destroy_window. In the
latter case the window is already distroyed and any of KWin's cleanup
calls will cause a BadWindow (or similar) error.

The idea to circumvent these errors is to try to wait for the
DESTROY_NOTIFY event. To do so the processing of the release is slightly
delayed. If KWin gets the destroy notify before the delay times out the
Unamanged gets released immediately but with a Destroy flag. For this a
new enum ReleaseToplevel is introduced and Unmanage::release takes this
as an argument instead of the bool which indicated OnShutdown. Also this
enum is added to Toplevel::finishCompositing so that it can ignore the
destroyed case and not generate an error.

REVIEW: 117422
2014-04-16 13:32:11 +02:00
Martin Gräßlin
d2d89653b2 Print better error messages for XCB errors from extensions
Qt doesn't print proper error messages for any errors caused by
extensions. As KWin is a heavy user of extensions not of interest to Qt
(e.g. damage or composite) we do our own error code mapping.

The Xcb::ExtensionData is extended by a vector of OpCodes and ErrorNames.
In ::workspaceEvent it's checked whether the event is an error and if
that is the case KWin tries to map the error to one of the extensions.

If that is successful it prints a warning looking like Qt's one:
XCB error: 151 (BadDamage), sequence: 12534, resource id: 127926362, \
    major code: 143 (DAMAGE), minor code: 2 (Destroy)

and the event gets filtered out, so that the Qt error messages is not
printed in addition.

If the error is not from one of the extensions the error is not filtered
out and so the default Qt behavior gets applied.

REVIEW: 117421
2014-04-16 13:30:31 +02:00
Martin Gräßlin
fd0fd82ad6 Use NETWM to get updates on blocking compositing
Adds NET::WM2BlockCompositing to the Client's properties which allows to
read the state from the NETWinInfo object and get updates without having
to resolve the atom ourselve.

REVIEW: 117561
2014-04-14 15:34:39 +02:00
Martin Gräßlin
c63e3533f4 Get Toplevel::resourceName() and ::resourceClass() from NETWinInfo
It's provided by the NETWinInfo, no need to keep an own implementation.
To keep compatibility with existing KWin code using the window class or
resource it's always converted to lower.

In addition a notify signal Toplevel::windowClassChanged is added and
emitted from the event handler whenever the WM2WindowClass property is
set.

REVIEW: 117496
2014-04-14 08:46:38 +02:00
Martin Gräßlin
b8cc10ffab [kwinglutils] Improve cleanup handling
* add static cleanup handlers to GLTexturePrivate and GLRenderTarget
* revert the runtime resolved features (e.g. RenderTargets are not
  supported once we run the cleanup code)
* clear the extension lists
* reset the version variables

REVIEW: 117484
2014-04-14 08:33:19 +02:00
Martin Gräßlin
c837ffddf4 Add a cleanup() method to GLPlatform
Adds a cleanup() method to GLPLatform which deletes the static instance.
It gets invoked from cleanupGL() in kwinglutils on tear-down of the
OpenGL backend. Thus the backend doesn't leave incorrect GL info around.

E.g. if KWin starts with llvmpipe the recommended compositor is XRender.
So the backend and the platform is created. Now KWin starts the XRender
Compositor and the GLPlatform is still valid and when trying to load the
Blur or Contrast effect this will succeed as the GLPlatform data would
allow it. But on first try to use the Effect it will fail due to no
valid OpenGL context and even crash.

REVIEW: 117480
2014-04-14 08:31:39 +02:00
l10n daemon script
09d421fbb4 SVN_SILENT made messages (.desktop file) 2014-04-14 05:00:20 +00:00
l10n daemon script
d117d38efa SVN_SILENT made messages (.desktop file) 2014-04-13 05:18:57 +00:00
Marco Martin
7380379fcf we don't have different widgets for vd anymore 2014-04-11 16:46:28 +02:00
Martin Gräßlin
651ea9f374 [blur|contrast] Explicitly check for openglCompositing in ::supported()
Ensures that the further checks are not performed on XRender compositing.

REVIEW: 117497
2014-04-11 08:36:43 +02:00
Martin Gräßlin
1c0d0211ca Add const method variants to Xcb::Wrapper
Adding a const variant for ::data() to remove an unexpected copy.
To complete also the bool cast operator and isNull get a const
variant.

REVIEW: 117469
2014-04-11 07:36:18 +02:00
Martin Gräßlin
acdff6ea52 Drop static getStringProperty wrappers in Toplevel
The methods Toplevel::staticWmCommand and Toplevel::staticSessionId were
both only used from one method and just wrapping an invocation to
getStringProperty.

REVIEW: 117474
2014-04-10 18:10:58 +02:00
Martin Gräßlin
f1f6d6eea8 Get windowRole from NETWinInfo instead doing it ourself
NETWinInfo provides windowRole if NET::WM2WindowRole is added to the
properties2. Thus KWin doesn't need to monitor and fetch itself, but
can just wrap the data provided by NETWinInfo.

In addition a signal is added to Toplevel whenever the window role
changes.

REVIEW: 117470
2014-04-10 15:57:00 +02:00
Martin Gräßlin
cf498cc14b Use KWindowInfo::clientMachine in ClientMachine::resolve
Let's use the available API instead of duplicating code.

Nice side effect: client_machine.cpp doesn't include utils.h any more
which simplifies the unit test.

REVIEW: 117473
2014-04-10 15:55:17 +02:00
Martin Gräßlin
4a79cec8a6 Drop hacks and default rule for XV
Apparently it's not about mplayer but about XV [1], not really a relevant
application nowadays which would be important enough for having hacks.

REVIEW: 117479

[1] https://en.wikipedia.org/wiki/Xv
2014-04-10 15:04:19 +02:00
Martin Gräßlin
6828f33548 Remove hack for "mozilla"
It's dead, since 2006 it's "SeaMonkey" and it has a proper window class:
WM_CLASS(STRING) = "Navigator", "Seamonkey"

(Yes, I installed it. No, my distro doesn't have a package.)

REVIEW: 117472
2014-04-10 11:36:37 +02:00
l10n daemon script
003ba3f343 SVN_SILENT made messages (.desktop file) 2014-04-10 05:10:58 +00:00
Martin Gräßlin
b07dbedfdb [effects/slidingpopups] Don't update property on window closed
If the property changes the animation data is updated. As the last
property change event will definately be delivered before an unmap notify
we can be sure that the animation data is up to data. Reading the
property again does not have any advantages.

By removing it we get rid of at least one roundtrip to the X Server and
it fixes one failed GetProperty error when it tries to read the property
for an already destroyed unmanaged.

REVIEW: 117431
2014-04-09 08:35:39 +02:00
l10n daemon script
d630b657cd SVN_SILENT made messages (.desktop file) 2014-04-09 04:58:31 +00:00
l10n daemon script
f13d89a9b6 SVN_SILENT made messages (.desktop file) 2014-04-08 06:22:50 +00:00
Martin Gräßlin
a622d5300a [wayland] Properly create WaylandScreens
Rebase error - caused KWin to just crash when started in Wayland mode.
2014-04-07 08:01:46 +02:00
Martin Gräßlin
8a2df7ac4d Add a build option to compile with gcov support
New build option KWIN_BUILD_COVERAGE which adds
"-fprofile-arcs -ftest-coverage" to CMAKE_CXX_FLAGS and "-lgcov" to
CMAKE_EXE_LINKER_FLAGS.

REVIEW: 117369
2014-04-07 08:01:25 +02:00
Martin Gräßlin
fbec8ea12c [scene-xrender] Do not render deco part if it doesn't end on screen
If the deco part doesn't exist or the target rect is empty, KWin should
not try to composite the deco part on the screen. It can be an empty
rect for maximized windows. If the render composite is tried it results
in an error (note - man page says "This request does never generate any
errors.").

To simplify the macro is turned into a lambda.

The root cause for this problem is that PaintRedirector creates an
XRenderPicture for those invalid geometries and this requests arleady
fails. Thus RasterXRenderPaintRedirector is adjusted to not create the
XRenderPicture in that case and set it to nullptr. For a null
XRenderPicture XCB_RENDER_PICTURE_NONE is returned.

BUG: 332247
REVIEW: 117373
2014-04-07 08:00:52 +02:00
l10n daemon script
bd7047929c SVN_SILENT made messages (.desktop file) 2014-04-07 04:54:14 +00:00
l10n daemon script
43fd082b0a SVN_SILENT made messages (.desktop file) 2014-04-06 05:11:55 +00:00
l10n daemon script
c92da6202f SVN_SILENT made messages (.desktop file) 2014-04-05 04:53:22 +00:00
Martin Gräßlin
aa7db138e8 Remove unused variables
Thanks to clang for better warnings than g++.
2014-04-04 13:55:57 +02:00
Martin Gräßlin
c390a94261 Use new connect syntax in client.cpp
Excluded are the signals to Appmenu as that's currently excluded from
build.

Private slots with only one connection are turned into lambdas.

REVIEW: 117355
2014-04-04 12:10:56 +02:00
l10n daemon script
e6db000065 SVN_SILENT made messages (.desktop file) 2014-04-04 05:29:27 +00:00
Martin Gräßlin
1992b97ae3 Fix KWIN_VERSION_STRING in config-kwin.h.cmake
Left-over from pre-splitting.
2014-04-03 13:45:57 +02:00
Martin Gräßlin
2d2e1976cb Fix EffectsHandlerImpl::getProxy
Internal name of effects no longer starts with kwin4_effect.
2014-04-03 11:00:25 +02:00
Martin Gräßlin
bce964cca6 Add reviewboardrc 2014-04-03 10:46:33 +02:00
Martin Gräßlin
28b4cfaa9a Drop build dependency on kde4support for the build system
* Ported last qt4_wrap thingy to qt5_wrap thingy
* Include KF5Init (needed for kdeinit_executable
* Optionally include KF5DocTools and bind the docs subdirectory to it
* Include GenerateExportHeaders
2014-04-03 10:15:57 +02:00
Martin Gräßlin
ceecc5be27 [kwincompositing] Integrate the new kcmkwin subdirectory into build tree
* root CMakeLists.txt finds Declarative and Qt5Multimedia (Runtime)
* kwincompositing CMakeLists.txt is cleaned up to not be a project
2014-04-03 07:23:17 +02:00
Martin Gräßlin
388cd21adf Add Reset, Default and Apply button to config dialog
Makes it more like when starting KCMShell.

REVIEW: 117110
2014-04-03 07:23:17 +02:00
Martin Gräßlin
b14cae83a0 Translate the names of the categories
The category gets read from the KService and is not translated.
Because of that the KCM needs to do the translation of the categories.
This was also the case in the old KCM.

REVIEW: 117111
2014-04-03 07:23:17 +02:00
Martin Gräßlin
30dd9b7820 Fix the initial size of the KCMs
Both KCMs had a hard coded default which is obviously bad. Instead we
now calculate a useable implicitWidth and implicitHeight and use this
as the minimum size for the KCM. Which means we need also track changes
to these two root object properties and update the QWidget container
accordingly.

BUG: 332518
BUG: 332519
REVIEW: 117079
2014-04-03 07:23:17 +02:00
Martin Gräßlin
1b7f66243d qtextracomponents becomes kquickcontrolsaddons 2014-04-03 07:23:16 +02:00
l10n daemon script
a50e5da307 SVN_SILENT made messages (.desktop file) 2014-04-03 07:23:16 +02:00
Martin Gräßlin
39b61238e5 Load generic scripted config plugin for scripted effects
We check whether the effect is scripted and provides a config. If that
is the case our normal approach for getting the config plugin fails and
we use this case to try to load it again through the generic scripted
config plugin.

REVIEW: 116863
BUG: 332186
2014-04-03 07:23:16 +02:00
Martin Gräßlin
ca725b437f Use KPluginTrader to find the effect configuration and show it
The model data contains a new role ConfigurableRole. This is used to
decide whether the configure button is available.

The value for the role is set by searching for a KPlugin which has the
effect's service name as X-KDE-ParentComponents. All available configs
are expected to be in kf5/kwin/effects/configs/ and are located through
the KPluginTrader thus binary effect configs need to provide json meta
data.

REVIEW: 116855
2014-04-03 07:23:16 +02:00
l10n daemon script
e5ef7602ba SVN_SILENT made messages (.desktop file) 2014-04-03 07:23:16 +02:00
l10n daemon script
1cbdb96c9a SVN_SILENT made messages (.desktop file) 2014-04-03 07:23:16 +02:00
l10n daemon script
5ef9359f6f SVN_SILENT made messages (.desktop file) 2014-04-03 07:23:16 +02:00
l10n daemon script
de968730e3 SVN_SILENT made messages (.desktop file) 2014-04-03 07:23:16 +02:00
l10n daemon script
75ccceef47 SVN_SILENT made messages (.desktop file) 2014-04-03 07:23:16 +02:00
l10n daemon script
211e5c2ab9 SVN_SILENT made messages (.desktop file) 2014-04-03 07:23:16 +02:00
Martin Gräßlin
cd5c5498af Fix spacing of Effect row
Using implicitHeight of the row layout as the height.

REVIEW: 116757
2014-04-03 07:23:16 +02:00
Martin Gräßlin
7166bdad61 Filter on internal effects
By default internal effects are excluded from the list, but by
checking the option in the config menu, they get included in the
list.

REVIEW: 116755
2014-04-03 07:23:16 +02:00