lp:~vanvugt/compiz/fix-1066804-1066805

Created by Daniel van Vugt and last modified
Get this branch:
bzr branch lp:~vanvugt/compiz/fix-1066804-1066805
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

Owner:
Daniel van Vugt
Project:
Compiz
Status:
Merged

Recent revisions

3418. By Daniel van Vugt

Templates relating to the composite plugin should only be instantiated in
the composite plugin.
(LP: #1066804) (LP: #1066805)

3417. By Albert Astals Cid

Do not move windows between viewports/workspaces when changing its size
(e.g. maximizing). (LP: #776435)

.. Fixes: https://bugs.launchpad.net/bugs/776435. Approved by Daniel van Vugt, jenkins.

3416. By Sam Spilsbury

Don't trigger actions unless they are actually marked active. It is possible
that we may have a passive button grab for other reasons than actions being
bound, so actions which haven't been added should be ignored.
(LP: #1053280). Fixes: https://bugs.launchpad.net/bugs/1053280. Approved by jenkins, Daniel van Vugt.

3415. By Daniel van Vugt

Avoid duplicate template instantiations of PluginClassHandler<>, at least
for those plugins that get re-used by others.

Duplicate template instances are normally harmless and only cause binary
bloat. However if you have static members in an template like:
    PluginClassHandler<CompositeScreen,CompScreen,N>::mIndex
then that static variable also gets multiple separate instances. And the
version that a plugin uses depends entirely on the shared library load order
and load flags.

With clang, the OpenGL plugin was getting its own copy of the Composite
templates resulting in crash LP: #1065815. This is because clang compiles
mIndex to be a weak linkage symbol, so the dynamic loader at runtime chooses
which version to use. The crash does not happen with GCC because it compiles
mIndex to be a "unique" symbol (GNU extension), automatically avoiding
such duplicate problems.

More generally this possibly explains some crashes we see in and
around PluginClassHandler when plugins are toggled in CCSM. Although there
may be other templates that need similar fixes yet to resolve those.. Fixes: https://bugs.launchpad.net/bugs/1065815. Approved by Sam Spilsbury, jenkins.

3414. By Daniel van Vugt

Don't try writing to const static memory. Any sane compiler like clang will
put const static data into a read-only memory section. This means any write
to it will segfault.
(LP: #1065814)
. Fixes: https://bugs.launchpad.net/bugs/1065814. Approved by Sam Spilsbury, jenkins.

3413. By Sam Spilsbury

Added tests for the StringToModifiers and ModifiersToString code, move the
code which detects <Primary> as ControlMask upstream and use two functions to
ensure that duplicates aren't added.

Fixes Jenkins failures. (LP: #1058577). Fixes: https://bugs.launchpad.net/bugs/936840, https://bugs.launchpad.net/bugs/1058577. Approved by Daniel van Vugt, Sam Spilsbury.

3412. By Sam Spilsbury

Fix numerous problems with invalid C/C++ code that prevent us from building
with clang/clang++.
(LP: #1060804). Fixes: https://bugs.launchpad.net/bugs/1060804. Approved by Daniel van Vugt.

3411. By Daniel van Vugt

Fix leakage of destroyed_pixmaps_table, containing pointers to freed decor_t's
which could result in a freed GHashTable being passed into g_hash_table_remove
and causing a crash.
(LP: #1060171). Fixes: https://bugs.launchpad.net/bugs/1060171. Approved by Sam Spilsbury.

3410. By Sam Spilsbury

Check the return value of pkg_check_modules and don't check for
libcompizconfig_internal (LP: #1060708). Fixes: https://bugs.launchpad.net/bugs/1060708. Approved by Daniel van Vugt.

3409. By Sam Spilsbury

Slightly more verbose matchers for CCSSettingValue so we can see what's going wrong in the tests.. Fixes: . Approved by Daniel van Vugt.

Branch metadata

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

Subscribers