Commit graph

9173 commits

Author SHA1 Message Date
Martin Gräßlin
f2069112c2 Fix crash on closing present windows due to filter frame being null
Crash got introduced with bbf561ef9726e574684b67d53fc3c56cfc4e2e89

Also fixing coding style issue introduced in same commit.
2012-05-03 10:34:09 +02:00
Martin Gräßlin
d05d55b140 Delay creation of EffectFrames till needed
Creating an EffectFrame requires I/O which takes on my system
during testing between 10 and 40 msec. Also it needs a little
bit of memory.

This changes moves out the creation of EffectFrames at Effect
load till the Effect actually needs the EffectFrame. E.g. if a
user does not filter in PresentWindows there is no need to ever
create it.

BoxSwitch effect is ignored as it should be dropped for 4.9.

REVIEW: 104815
2012-05-03 09:10:48 +02:00
Martin Gräßlin
8489ede9aa Move loading of Cube textures into thread
Cube effect loads 0 to 2 textures which has been
performed during configuration. This change delays
loading the textures till cube is activated for the
first time and the loading from file is moved into
a thread.

This means that for a very short time the texture
is not yet visible, but this is not a problem as
the cube animates from fully opaque starting state.
So during the loading the texture would not be
visible anyway.

REVIEW: 104807
2012-05-03 09:07:06 +02:00
Thomas Lübking
a569b5c785 Revert "kwin: fixing high cpu usage bugs"
This reverts commit d07964e0af95911a97c3f474b694570cb279878c.

Conflicts:

	kwin/deleted.h
2012-05-02 21:56:33 +02:00
Thomas Lübking
c2940d8889 polish track mouse effect, add xrender implementation 2012-05-02 21:56:18 +02:00
Philipp Knechtges
9a1ad96e93 kwin: provide clipping for the TabBox thumbnails
BUG: 299198
REVIEW: 104399
2012-05-02 19:18:13 +02:00
Martin Gräßlin
eb5aa92746 Revert 236d4c8 for EffectsHanlder::effectConfig
EffectConfig is used also in the config modules which
means kwinrc needs to be explicitly specified.

BUG: 299163
REVIEW: 104808
2012-05-02 17:44:55 +02:00
Philipp Knechtges
8e8212b0ef kwin: adding a proper clipping to the lanczosfilter 2012-05-01 23:19:42 +02:00
Philipp Knechtges
05a8777edf kwin: adding proper clipping for transformed windows
This patch kind of reintroduces the old PaintClipper functionality.

REVIEW: 104397
2012-05-01 23:19:04 +02:00
Hugo Pereira Da Costa
ba573c60ed Check that widget style supports "SH_ArgbDndWindow" to decide whether or not to draw a shadow around
ItemTag drag-and-drop icon.
2012-05-01 17:32:28 +02:00
Hugo Pereira Da Costa
83255bed73 fixed rect adjustment. 2012-05-01 17:32:28 +02:00
Hugo Pereira Da Costa
aab88cc10d re-implemented compositing-off dnd calculation properly. 2012-05-01 17:32:28 +02:00
Hugo Pereira Da Costa
ba3b445231 fixed hotspot. 2012-05-01 17:32:28 +02:00
Hugo Pereira Da Costa
27f1f45391 implemented (partially) shadows for drag pixmaps. 2012-05-01 17:32:28 +02:00
Hugo Pereira Da Costa
06820d7c77 fixed active item detection when rendering drag pixmap. 2012-05-01 17:32:28 +02:00
Script Kiddy
be7573445a SVN_SILENT made messages (.desktop file) 2012-05-01 17:26:20 +02:00
Martin Gräßlin
f1a50e0fb5 Only create decoration once during Client::manage
Client::manage calls setupCompositing on the not
yet fully managed client before it wants to create
the window decoration. This means the decoration is
created twice and maybe even if not needed (noBorder
not yet set).

If the Client is not yet managed setupCompositing
will not update the decoration - it will be handled
by manage later on.

Furthermore if compositing is not active, setup
compositing does not have to perform any action.

REVIEW: 104758
2012-05-01 08:49:20 +02:00
Martin Gräßlin
de5003299b Don't recreate the decoration on release window
When a window is going to be closed there is no
need to recreate the window decoration from
finishCompositing.

REVIEW: 104759
2012-05-01 08:49:20 +02:00
Martin Gräßlin
e3f2dd7612 Move KServiceTypeTrader query for Effects into a thread
By moving the query for effects into an own thread the
startup does not have to wait till all effects are loaded.
The thread moves the loading of the effects after the
Window Manager and Compositor has been fully initialized.
This is possible as EffectsHandler is fully functional even
without any effects.

The compositor ensures that at least one frame is rendered
before the started thread returns which makes the complete
startup more responsive.

REVIEW: 104583
2012-05-01 08:49:20 +02:00
Martin Gräßlin
a4f5c6f203 Improved handling of defines in kwinbindings
* drop NOSLOTS nowhere else used or set
* drop DEF4 as unused
* undef DEF3
* drop KWIN_CONNECT (merged into DEF2 and DEF3)

REVIEW: 104800
2012-05-01 08:46:07 +02:00
Thomas Lübking
c8320b0db7 Avoid continious repaints in Present Windows effect
REVIEW: 104787
2012-04-30 22:37:40 +02:00
Thomas Lübking
75b6a04732 add delay before reinit confirmation
required to mitigate false positives due to threaded init code

REVIEW: 104799
2012-04-30 22:37:40 +02:00
Thomas Lübking
d6209471e8 sync maximization and quick tiling state in tabs
BUG: 296097
REVIEW: 104293
FIXED-IN: 4.9
2012-04-30 22:37:40 +02:00
Thomas Lübking
77dbf4082f support tabs in directional window switching shortcuts
BUG: 296096
REVIEW: 104293
FIXED-IN: 4.9
2012-04-30 22:37:40 +02:00
Thomas Lübking
49fff98f04 sanitize geom_restore if the window gets quickly untiled after initially being maximized
BUG: 298646
REVIEW: 104715
FIXED-IN: 4.9
2012-04-30 22:37:40 +02:00
Martin Gräßlin
abd3808574 Read KWin Script from file moved into thread
The I/O intensive reading of the complete KWin Script
file into a QByteArray is moved into a thread.

Evaluating and setting up the script engine is still
performed in the main thread.

REVIEW: 104782
2012-04-29 22:23:44 +02:00
Martin Gräßlin
6cbdfd3cd5 Move KServiceTypeTrader query for Scripts into a thread
Searching for the scripts to load is performed in an own
thread including unloading of already loaded scripts which
no longer should be loaded.

To ensure that two threads are not trying to load/unload
at the same time a mutex is added to protect the list of
loaded scripts.

REVIEW: 104768
2012-04-29 22:23:44 +02:00
Martin Gräßlin
bb5dce0e3b Use KGlobal::config() instead of specifying kwinrc
Inside KWin we can just use the global configuration
instead of manually opening kwinrc which is just the
same.

REVIEW: 104754
2012-04-29 21:55:45 +02:00
Martin Gräßlin
6919b4dc94 Drop CompositingPrefs from Compositing KCM
Instead of getting the information from CompositingPrefs
the running KWin instance is queried through D-Bus.
In general the running KWin should have more information
about whether Compositing will work or not.

This means the kcm no longer has to link OpenGL.

REVIEW: 104753
2012-04-29 21:50:09 +02:00
Martin Gräßlin
704902720b Perform detection of CompositingPrefs async
Detecting CompositingPrefs invokes an external program. Waiting
for this can be moved in a second thread.

Due to the introduction of the thread the initialization order
of KWin is changed: the WindowManager is initialized before the
Compositor. Interestingly this makes KWin felt more responsive
as the screen is not frozen for several seconds.

REVIEW: 104579
2012-04-29 21:47:04 +02:00
Martin Gräßlin
fdd804bdf4 Remove GL context creation from CompositingPrefs
Whether creating the OpenGL context succeeds or not
had no influence in any decisions on the used settings
for OpenGL based compositing.

The only valid information CompositingPrefs still detects
is whether direct rendering should be used which is
performed out of process and does not require a context.

So overall the context creation is not needed and can
be removed.

REVIEW: 104778
2012-04-29 21:46:43 +02:00
Martin Gräßlin
2fc0b8074b Move detection of GLPlatform and printResults into Scene
This means the GLPlatform is filled with values from the
context actually used for Compositing and if XRender
compositing is used no OpenGL information is logged.
2012-04-29 21:44:35 +02:00
Martin Gräßlin
23708521c6 Make GLVSync a complete user controlled variable
There is no need to have it driver specific any more.
All drivers seem to support it (only Intel had been
opt-ed out without any apparent reason shown in commit log).

This was the last driver specific setting which means that
the method applyDriverSpecificSettings() got dropped from
CompositingPrefs.
2012-04-29 21:44:35 +02:00
Martin Gräßlin
bcbbf3c5a8 Drop recommendCompositing from CompositingPrefs
It's always true which means it's no longer needed.
2012-04-29 21:44:34 +02:00
Martin Gräßlin
d6540c8392 Remove strict binding from compositing prefs
Strict binding follows the driver (GLPlattform) unless
the user has a config value specified in the kwinrc.

For this a new property is added to Options to indicate
whether strict binding is user defined or follows the
driver. In case of driver the strict binding option is
set when OpenGL compositor starts up.
2012-04-29 21:44:34 +02:00
Alex Fiestas
21c5264efe Remove forward declaration of Kephal stuff (leftover from the port I guess) 2012-04-29 21:07:10 +02:00
Martin Gräßlin
b49356bc33 Do not perform setupCompositing on Client if Toplevel is not setup
Toplevel::setupCompositing returns a boolean value and returns
false in the cases where it has not setup compositing.

This is used by the specialization on Client to not perform the
Client specific setup if Toplevel has not setup.

REVIEW: 104767
2012-04-28 09:42:26 +02:00
Martin Gräßlin
be55ac5c60 Introduce post Workspace init phase
Workspace emits a signal when the initialization finished and
interested parties can connect to this signal to perform post
init actions. That is everything that does not have to be
performed to have a completely working Window Manager.

As an example loading the scripts is moved into this post init
phase.

REVIEW: 104580
2012-04-27 19:02:21 +02:00
Martin Gräßlin
5803fa2353 Drop CompositingPrefs detection from screenedges kcm
CompositingPrefs have only be used to get the default
value when reading whether the Compositing Enabled
config option.

But CompositingPrefs always returns true which makes
it useless to create an OpenGL context for this.

REVIEW: 104752
2012-04-27 16:41:34 +02:00
Script Kiddy
ee27f4d744 SVN_SILENT made messages (.desktop file) 2012-04-25 10:30:51 +02:00
Martin Gräßlin
55980513e7 Fix regressions related to stacking order changes
The change to have stacking order containing
Toplevel inestead of Clients (431aad6d6994695e72697fcc3299ec2cb6f0684e)
introduced possible crashers as recognized in:
http://git.reviewboard.kde.org/r/104519/#review12714

This change fixes these issues by adding missing
null pointer checks after casting to Client.

BUG: 298669
FIXED-IN: 4.9.0
REVIEW: 104714
2012-04-24 22:06:33 +02:00
Thomas Lübking
2fce451be5 allow to sync dynamic Qt props on tabgroups
REVIEW: 104695
2012-04-24 20:41:06 +02:00
Thomas Lübking
ae769906de fix quick unmaximization position
CCBUG: 298646
REVIEW: 104702
2012-04-24 20:40:53 +02:00
Lamarque V. Souza
44b2b1e493 Revert "Merge branch 'kwin/active-kconf_update'"
This reverts commit 3676b8dcc9d33155881085ebff6073c372dcd0c9, reversing
changes made to 125533b36bd009b23f659a54d486d73d29081b4f.
2012-04-24 14:57:57 -03:00
Mathias Gottschlag
1d2e3aa327 Let kwin scripts add dynamic properties to client objects.
This enables the script wrapper objects to automatically create new
dynamic properties for Client objects so that scripts can register custom
properties.

REVIEW: 104697
2012-04-24 17:42:16 +02:00
Lamarque V. Souza
64a714b812 Merge branch 'kwin/active-kconf_update' 2012-04-23 17:32:28 -03:00
Hugo Pereira Da Costa
2f9834ad04 Merge branch 'master' of git://anongit.kde.org/kde-workspace 2012-04-23 13:00:36 +02:00
Hugo Pereira Da Costa
f76b087b33 mark title transition as dirty when resizing client, to avoid flicker.
CCBUG: 298428
2012-04-23 11:48:30 +02:00
Martin Gräßlin
ed7d612ef3 Ensure that Extension::init() is only performed once
And call init from Workspace ctor before it gets called
somewhere else (e.g. in the compositor).

REVIEW: 104578
2012-04-22 22:29:17 +02:00
Martin Gräßlin
3ed63d4c45 Reparse Configuration at startup asynchronous
Options loading is split into three parts:
* reparse configuration
* loading of non-compositing related options
* loading of composited related options not needing CompositingPrefs

At startup the reparsing of configuration is done through a Thread
to gain a little bit of less waiting.

Before something else accesses the KConfig for the first time we
wait for the thread to finish and perform the other two loading
operations of Options.

The settings depending on CompositingPrefs will only be invoked
if a compositor is going to be needed.

REVIEW: 104562
2012-04-22 22:29:07 +02:00