Merge lp://qastaging/~3v1n0/bamf/lib-factory-xids-matching into lp://qastaging/bamf/0.4
Status: | Merged |
---|---|
Approved by: | Marco Trevisan (Treviño) |
Approved revision: | 480 |
Merged at revision: | 462 |
Proposed branch: | lp://qastaging/~3v1n0/bamf/lib-factory-xids-matching |
Merge into: | lp://qastaging/bamf/0.4 |
Diff against target: |
892 lines (+410/-120) 9 files modified
lib/libbamf/Makefile.am (+1/-0) lib/libbamf/bamf-application-private.h (+30/-0) lib/libbamf/bamf-application.c (+71/-8) lib/libbamf/bamf-factory.c (+157/-44) lib/libbamf/bamf-factory.h (+17/-0) lib/libbamf/bamf-matcher.c (+68/-38) lib/libbamf/bamf-view-private.h (+2/-0) lib/libbamf/bamf-view.c (+62/-29) lib/libbamf/bamf-window.c (+2/-1) |
To merge this branch: | bzr merge lp://qastaging/~3v1n0/bamf/lib-factory-xids-matching |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Michal Hruby (community) | Approve | ||
Review via email:
|
Commit message
BamfFactory: be more smart to re-associate a dbus path to a view using windows xid
Description of the change
BamfFactory has been improved adding the new bamf_factory_
Also now the factory now has been improved to re-associate the opened views to the new ones using the related windows xids. So basically when a new application has been opened, we initially try to re-associate it to the opened view with the same desktop file; if that check fails we fallback to the children windows xid comparison (if a view has at least a xid that matches the ones of the new application, then we consider them the same).
So, thanks to this both applications with .desktop files associated and applications with no desktop file can be re-used avoiding memory duplication and double launcher icon instances.
Tests covered by: lp:~3v1n0/unity/launcher-double-icons-tests
It seems to be working fine, although it seems to be causing some assertions:
(bamfdaemon:26376): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed
Backtrace:
#0 g_log (log_domain= 0x7ffff632370e "GLib", log_level= G_LOG_LEVEL_ CRITICAL, 0x7ffff632cb2a "%s: assertion `%s' failed") buildd/ glib2.0- 2.32.1/ ./glib/ gmessages. c:788 buildd/ glib2.0- 2.32.1/ ./glib/ gstrfuncs. c:2771 office_ window (window=0x7ac1e0, work/unity/ source/ bamf/src/ bamf-matcher. c:1378 window_ opened (screen=<optimized out>, window=0x7ac1e0, work/unity/ source/ bamf/src/ bamf-matcher. c:2081 marshal_ VOID__OBJECTv (closure=0x7b2630, value=< optimized out>, instance=0x777a80, args=<optimized out>, data=<optimized out>, n_params=<optimized out>, types=0x79bf50) buildd/ glib2.0- 2.32.1/ ./gobject/ gmarshal. c:1312 invoke_ va (closure=0x7b2630, value=0x0, instance=0x777a80, args=0x7fffffff d348, n_params=1, types=< optimized out>) buildd/ glib2.0- 2.32.1/ ./gobject/ gclosure. c:840 emit_valist (instance=0x777a80, id=<optimized out>, detail=0, var_args=<optimized out>) buildd/ glib2.0- 2.32.1/ ./gobject/ gsignal. c:3207 <optimized out>, id=<optimized out>, detail=<optimized out>) buildd/ glib2.0- 2.32.1/ ./gobject/ gsignal. c:3352 marshal_ VOID__OBJECTv (closure=0x7b2590, value=< optimized out>, instance=0x79a390, args=<optimized out>, data=<optimized out>, n_params=<optimized out>, types=0x7b0f30) buildd/ glib2.0- 2.32.1/ ./gobject/ gmarshal. c:1312 invoke_ va (closure=0x7b2590, value=0x0, instance=0x79a390, args=0x7fffffff d718, n_params=1, types=< optimized out>) buildd/ glib2.0- 2.32.1/ ./gobject/ gclosure. c:840 emit_valist (instance=0x79a390, id=<optimized out>, detail=0, var_args=<optimized out>) buildd/ glib2.0- 2.32.1/ ./gobject/ gsignal. c:3207 <optimized out>, id=<optimized out>, detail=<optimized out>) buildd/ glib2.0- 2.32.1/ ./gobject/ gsignal. c:3352 libwnck- 3.so.0 libwnck- 3.so.0 buildd/ glib2.0- 2.32.1/ ./glib/ gmain.c: 2515 context_ dispatch (context=0x666a80) buildd/ glib2.0- 2.32.1/ ./glib/ gmain.c: 3052 context_ iterate (dispatch=1, <optimized out>, context=0x666a80, self=<optimized out>)
format=
at /build/
#1 0x00007ffff63014f2 in g_str_has_prefix (str=0x0,
prefix=0x43e931 "libreoffice")
at /build/
#2 0x000000000042f265 in is_open_
self=<optimized out>)
at /home/miso-
#3 handle_
self=0x7861b0) at /home/miso-
#4 0x00007ffff67b6354 in g_cclosure_
return_
marshal_
param_
at /build/
#5 0x00007ffff67b2eca in _g_closure_
return_
param_
at /build/
#6 0x00007ffff67cb741 in g_signal_
signal_
---Type <return> to continue, or q <return> to quit---
at /build/
#7 0x00007ffff67cc242 in g_signal_emit (instance=
signal_
at /build/
#8 0x00007ffff67b6354 in g_cclosure_
return_
marshal_
param_
at /build/
#9 0x00007ffff67b2eca in _g_closure_
return_
param_
at /build/
#10 0x00007ffff67cb741 in g_signal_
signal_
at /build/
#11 0x00007ffff67cc242 in g_signal_emit (instance=
signal_
at /build/
#12 0x00007ffff787e339 in ?? () from /usr/lib/
#13 0x00007ffff787ea24 in ?? () from /usr/lib/
#14 0x00007ffff62e4c9a in g_main_dispatch (context=0x666a80)
at /build/
#15 g_main_
at /build/
#16 0x00007ffff62e5060 in g_main_
block=
at ...