Created by Daniel van Vugt on 2012-03-29 and last modified on 2012-03-29
Get this branch:
bzr branch lp:~vanvugt/compiz-core/fix-startup-plugins
Only Daniel van Vugt can upload to this branch. If you are Daniel van Vugt please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Daniel van Vugt
Compiz Core

Recent revisions

3072. By Daniel van Vugt on 2012-03-29

Avoid graphics corruption and hangs on compiz start-up by ensuring that
plugins don't get initialized, de-initialized and re-initialzed during
start-up. (LP: #963093) (LP: #963633)

The multiple init/fini/init calls occured when compiz was asked to load an
invalid plugin name. This occurred most recently as plugins "bailer" and
"detection" were left in some peoples' configs while the plugins themselves
no longer exist in the current compiz release.

The source of the graphics corruption and hangs has been found to be a
problem in the composite and/or opengl plugins. One or both of them are unsafe
to init/fini multiple times without a full compiz restart. So the root cause
is not exactly known yet. However composite and opengl are not alone; many
plugins have bugs with init/fini/init sequences, so it is valuable to fix
the start-up plugin ordering as this does.

Essentially this fix works by remembering which plugins don't exist at all
and putting them on a black list. Then subsquent updates check the blacklist
and know they should never include those failed plugins in testing whether
the active plugin lists have changed.

The second part of the fix is to ensure updatePlugins no longer calls
screen->setOptionForPlugin to change the active_plugins setting based on what
can and is loaded. That's not only redundant and wasteful but might cause
further callbacks to updatePlugins unnecessarily.

The final part of the fix is to remove a rendundant call to updatePlugins from
EventManager::init. It is not required as main tells PluginManager when to
load plugins on startup.

3071. By Sam Spilsbury on 2012-03-27

Fix LP#964248 - Build GTest locally

3070. By Daniel van Vugt on 2012-03-27

Fixed: Composite would fail to initialize even when it was the only
composite window manage running. This was because it leaked its handles
and in the unusual cases where plugin load failures cause other plugins to
unload/reload, composite would fail to init the second time.
(LP: #963465) (LP: #963465) (LP: #833729)

3069. By Daniel van Vugt on 2012-03-25

Fixed Super key release events sometimes not being sent to plugins
(LP: #963470)

This regression was caused by the latest fix for LP: #806255, which has now
been removed. That was the third different fix attempted for #806255 and all
three have caused different regressions. So #806255 will not be fixed for
now. The only remaining fix (guaranteed to work) for that bug is to eliminate
and rewrite the XkbStateNotify code in compiz-core and several plugins.
However that is a massive change we can't afford to risk right now. So we
need to accept that LP: #806255 won't be fixed for a while.

3068. By Daniel van Vugt on 2012-03-23

[Coverity] Avoid potential NULL pointer dereference (LP: #957572)

3067. By Alan Griffiths on 2012-03-23

If composite doesn't load: exit the process (instead of crashing later)

3066. By Daniel van Vugt on 2012-03-22

Don't rely on the value of "grabbed" to tell you if the root window is
presently accepting key events (meaning there are no external active grabs).
There are some edge cases where grabbed is false but root is still accepting
key events, so when that happened compiz would ignore its own key shortcuts
(LP: #953089)

This was a regression caused by the fix for LP: #806255. The fix for that
bug has now been redesigned to avoid causing LP: #953089.

3065. By Daniel van Vugt on 2012-03-21

Don't allow plugins (unity) to interfere with tap detection by blocking
compiz-core from handling key events (LP: #960831)

3064. By Daniel van Vugt on 2012-03-20

Bump version to At least until we have a release candidate

3063. By Sam Spilsbury on 2012-03-20

Use gconf_client_dir_exists as gconf_client_get_* doesn't set GError if
the dir doesn't exist in the gconf database. (LP: #953839)

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
This branch contains Public information 
Everyone can see this information.