Commit Graph

12715 Commits (607b3f0bc9163d5964a746cb6e55fcfcb188614d)

Author SHA1 Message Date
Thomas Lübking ec8f7e1fac ensure disjunct screenedges on overlapping screens
If two or more screens overlap (partially or fully)
we must not create double edges since kwin would
trigger both - since they've the same actions bound
(for sure) the action will called twice (so either
eg. toggle or skip one VD etc.)

BUG: 338381
REVIEW: 120060
2014-11-27 20:01:10 +01:00
Martin Gräßlin 66df3eefdf Cleanup: reduce usage of QDesktopWidget 2014-11-27 09:32:43 +01:00
Martin Gräßlin bf4ba54647 Remove displayWidth and displayHeight from the compositor
Instead of getting size from displayWidth() and displayHeight() use
the information we have from Screens. This means there is only one
place to have the information and by that we can ensure that all
components use the same data to rely on. displayWidth/displayHeight
seem to provide the wrong information when unplugging an output
without disabling the output. This results in rendering artefacts.
But KWin::Screens has the correct information available.
2014-11-27 09:00:19 +01:00
Martin Gräßlin cc98c5d9c7 Use screens()->geometry() in Workspace::desktopResized
It used to get the individual screen geometries from QDesktopWidget.
We don't need to go through QDesktopWidget any more as Screens
contains all the information we need in a more reliable way.
2014-11-27 09:00:19 +01:00
Martin Gräßlin 2eb876743c [screens] Replace DesktopWidgetScreens by XRandRScreens
A new implementation of the Screens interface is added which uses XRandR
directly instead of relying on QDesktopWidget. The implementation is
provided in a new implementation file screens_xrandr.cpp.

XRandRScreens comes with a unit test. Unfortunately it's rather difficult
to provide a proper unit test against XRandR. Xvfb (which is obviously
used on the CI system) doesn't provide the XRandR extension. Also on a
"normal" developer system one would not want to just execute the test as
the results are not predictable (number of available outputs?) and the
test would mess up the setup resulting in nobody wanting to execute the
test.

As a solution to both problems the unit test starts Xephyr as a nested
X server. This allows to have at least some limited tests against XRandR.
Nevertheless there are a few things which I was not able to test:
* multiple outputs
* no output at all

The nested X Server approach makes the interaction rather complex. Qt
opens it's connection against the main X Server thus QX11Info provides
a wrong connection and also KWin::connection() which is heavily used by
xcbutils and thus all the RandR wrappers have the wrong connection. To
circumvent this problem the test is GUILESS. In case it would call into
any code using QX11Info, it would probably either runtime fail or crash.

REVIEW: 117614
2014-11-27 09:00:19 +01:00
Martin Gräßlin 6d64113ed4 Do not include utils.h in xcbutils.h
Only needed for ScopedCPointer which can be defined in both utils and
xcbutils.h.

Not having utils.h in xcbutils.h makes it easier to have unit tests use
xcbutils.h as it removes the dependencies.
2014-11-27 09:00:19 +01:00
Fredrik Höglund 9d01ed16be Remove GLTexturePrivate::bind()/unbind()
These virtual methods are not reimplemented anywhere.
2014-11-26 22:01:54 +01:00
Fredrik Höglund 59b5746351 Mark SceneOpenGL::Texture::discard() as override final 2014-11-26 22:01:54 +01:00
Fredrik Höglund e47d8671e9 De-virtualize SceneOpenGL::Texture::load()
SceneOpenGL::Texture is not subclassed anywhere so there is no reason
for this function to be virtual.
2014-11-26 22:01:54 +01:00
Fredrik Höglund 4b9448db5e Inline GLTexture::load(QImage) in the constructor
This is the only place where it is called.

There was also no need for this function to be virtual since it's not
reimplemented anywhere.

This also fixes the GLTexturePrivate being created only to be
immediately deleted and replaced by a new GLTexturePrivate when the
GLTexture(QImage) constructor was used.

With this change the structure of the GLTexture effectively becomes
immutable to the outside world; the contents of the texture images can
change, but the texture images themselves cannot be reallocated.
2014-11-26 22:01:54 +01:00
Fredrik Höglund 9c7720abca Remove GLTexture::load(QPixmap) and load(QString)
These methods are only called from the GLTexture constructors,
so inline them there.
2014-11-26 22:01:54 +01:00
Fredrik Höglund fa52af4765 Remove SceneOpenGL::createTexture(QPixmap)
...and associated code.

It is no longer used.
2014-11-26 22:01:54 +01:00
Fredrik Höglund 34f1408134 Make the EffectFrame textures regular GLTextures
There is valid reason for these textures to be Scene::Texture's.
2014-11-26 22:01:54 +01:00
Fredrik Höglund 383a5ac319 Remove GLTexturePrivate::convertToGLFormat()
QImage::Format_RGBA8888_Premultiplied is the equivalent of
GL_RGBA/GL_UNSIGNED_BYTE, so use QImage::convertToFormat()
instead.

This commit also makes the texture upload code work correctly
on big-endian systems.
2014-11-26 22:01:23 +01:00
Fredrik Höglund 6ac7371113 Remove most calls to checkGLError()
...and rely on KHR_debug/GL_ARB_debug_output instead.
2014-11-25 21:57:57 +01:00
Fredrik Höglund c0deadfaad Add support for KHR_debug
Register a callback function for debug output when KHR_debug or
ARB_debug_output is supported.

Only error messages and warnings about undefined behavior are
enabled in release builds, while all debug messages are enabled
in debug builds.
2014-11-25 21:57:15 +01:00
Martin Gräßlin 7c62cd19ef Verify Workspace pointer in X11EventFilter::~X11EventFilter
In case the inheriting class of X11EventFilter is a child of
Workspace and deleted by the QObject dtor of Workspace the
Workspace::self() pointer is no longer valid and already set to
nullptr.
2014-11-25 12:57:37 +01:00
Martin Gräßlin b7a8bb4f52 Drop build option KWIN_BUILD_SCREENEDGES
The build option got introduced for Plasma Active back in a time
when we did not properly aim for convergence. In a Plasma 5 world
we want to have only one shell and one window manager which adjust
itself. This means we don't want a differently compiled kwin for
plasma active, but the same one. Thus the build option doesn't
make much sense any more. A KWin for touch interface needs to support
screenedges for the case that mouse is plugged in.

CCBUG: 340960
REVIEW: 121200
2014-11-24 10:48:49 +01:00
Martin Gräßlin 482f89b91f Fix build without KF5Activities
BUG: 340961
FIXED-IN: 5.2.0
REVIEW: 121202
2014-11-24 10:47:08 +01:00
Martin Gräßlin 26cf3195be [kcmkwin/tabbox] Find all layouts in lnf package
First try to locate all look-and-feel packages and check whether
they provide a WindowSwitcher. If they do they are inserted in
the list with the Package name being the user visible name.
So the good old sidebar is now called "Breeze".

REVIEW: 120914
2014-11-24 10:39:26 +01:00
Martin Gräßlin 0f7a990316 Use Protocol support in NETWinInfo instead of fetching them ourselves
Client does no longer need to track the protocols as this is also
provided by NETWinInfo as of version 5.3.

REVIEW: 120255
2014-11-24 10:37:18 +01:00
Fredrik Höglund cb39eb0cc5 Use consistent names for the static members in GLTexturePrivate 2014-11-23 20:20:16 +01:00
Fredrik Höglund 854f66c164 Make s_supportsUnpack a static member of GLTexturePrivate 2014-11-23 20:16:02 +01:00
Fredrik Höglund edb0751cba Remove the NPOT texture support checks
We require OpenGL 2.0 which always supports NPOT textures.
2014-11-22 15:53:15 +01:00
Fredrik Höglund 181afc85fe Remove the saturation support checks
We no longer use texture environment parameters to control saturation.
2014-11-22 15:14:07 +01:00
Fredrik Höglund 978a5e10f3 Remove the #ifdefs for GLES in GLTexture
...and replace them with runtime checks.

Reviewed-by: Jeremy Whiting <jpwhiting@kde.org>
2014-11-22 15:11:47 +01:00
Fredrik Höglund 8d059ae2da Require OpenGL 2.0 in the SceneOpenGL2 constructor
BUG: 340254
FIXED-IN: 5.1.2
2014-11-22 14:19:05 +01:00
Pino Toscano 1884798991 fixuifiles 2014-11-20 08:04:54 +01:00
Martin Gräßlin f103cd0bea DecorationShadow elements are QRects 2014-11-12 09:06:03 +01:00
Martin Gräßlin b337a0b52e DecorationShadow uses QRect to set element sizes 2014-11-11 17:02:15 +01:00
Martin Gräßlin 1afc355759 DecorationShadow uses QMargins for padding 2014-11-11 15:18:35 +01:00
Martin Gräßlin faa78e187e Rename DecoratedClient::borderingScreenEdges to adjacentScreenEdges 2014-11-11 14:33:31 +01:00
Martin Gräßlin 99545da109 [aurorae] s/requestMaximize/requestToggleMaximization/g 2014-11-11 13:20:15 +01:00
Martin Gräßlin dc85ab14f8 Decoration::windowFrameSection renamed to ::sectionUnderMouse 2014-11-11 13:17:50 +01:00
Martin Gräßlin 0f76516d01 [aurorae] Decoration::titleRect renamed to ::titleBar 2014-11-11 11:55:20 +01:00
Martin Gräßlin 8cf402f185 Decoration::extendedBorders renamed to ::resizeOnlyBorders 2014-11-11 11:33:02 +01:00
Martin Gräßlin 1c90ca9087 [aurorae] Decoration sets borders using QMargins 2014-11-11 10:49:10 +01:00
Martin Gräßlin 2fdafbb133 s/requestMaximize/requestToggleMaximization/g 2014-11-11 09:53:54 +01:00
Martin Gräßlin cb9cbae36e Decoration::paint takes the repaint region 2014-11-11 09:39:45 +01:00
Martin Gräßlin 09e72ce451 [kwin_wayland] Fix printing out the X11 display
std::endl was missing.
2014-11-07 14:58:21 +01:00
Martin Gräßlin 819c12819b [kwin_wayland] Do not require --display argument for starting X server
If display is not set, it won't be passed to the X command to start and
X will just pick the next free display id.
2014-11-07 14:58:09 +01:00
Jonathan Riddell e0b2299e84 Update version number for 5.2 development 5.1.1 2014-11-06 11:39:48 +01:00
l10n daemon script 8629054181 SVN_SILENT made messages (.desktop file) 2014-11-06 09:38:04 +00:00
l10n daemon script 6f0ff3ff7e SVN_SILENT made messages (.desktop file) 2014-11-06 08:51:14 +00:00
Martin Gräßlin e405f1ca07 Fix --x-server argument of kwin_wayland 2014-11-05 14:41:39 +01:00
Hugo Pereira Da Costa 931c43b6c4 added missing .data() to make connect/disconnect compile 2014-11-04 10:37:39 +01:00
Frank Osterfeld 4dc2ad22d7 Add libepoxy's include directory 2014-11-04 10:31:03 +01:00
Martin Gräßlin 062d071fc5 [kwindecoration] Add a PreviewButtonItem to the declarative plugin
Allows to create a DecorationButton and renders a preview for it.
Very basic, doesn't forward mouse events, etc.
2014-11-03 16:12:54 +01:00
l10n daemon script ccc7e52dc9 SVN_SILENT made messages (.desktop file) 2014-11-02 22:35:50 +00:00
l10n daemon script a010bbc6a7 SVN_SILENT made messages (.desktop file) 2014-11-02 21:49:41 +00:00