diff options
-rw-r--r-- | debian/changelog | 7 | ||||
-rw-r--r-- | libindicator/indicator-service.c | 30 | ||||
-rw-r--r-- | tests/Makefile.am | 54 | ||||
-rw-r--r-- | tests/Makefile.in | 166 | ||||
-rw-r--r-- | tests/service-version-good-service.c | 15 | ||||
-rw-r--r-- | tests/service-version-multiwatch-manager-impolite.c | 61 | ||||
-rw-r--r-- | tests/service-version-multiwatch-manager.c | 63 | ||||
-rw-r--r-- | tests/service-version-multiwatch-service.c | 48 |
8 files changed, 427 insertions, 17 deletions
diff --git a/debian/changelog b/debian/changelog index 079bb52..c45a932 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +libindicator (0.3.9-0ubuntu2~ppa1) UNRELEASED; urgency=low + + * Upstream merge + * Fixing unwatching crash (LP: #603489) + + -- Ted Gould <ted@ubuntu.com> Fri, 09 Jul 2010 13:40:46 -0500 + libindicator (0.3.9-0ubuntu1) maverick; urgency=low * New upstream release. diff --git a/libindicator/indicator-service.c b/libindicator/indicator-service.c index db234e2..55fb650 100644 --- a/libindicator/indicator-service.c +++ b/libindicator/indicator-service.c @@ -395,15 +395,38 @@ try_and_get_name (IndicatorService * service) return; } +typedef struct _hash_table_find_t hash_table_find_t; +struct _hash_table_find_t { + GObject * proxy; + gchar * name; +}; + +/* Look in the hash table for the proxy, as it won't give us + its name. */ +static gboolean +hash_table_find (gpointer key, gpointer value, gpointer user_data) +{ + hash_table_find_t * finddata = (hash_table_find_t *)user_data; + if (value == finddata->proxy) { + finddata->name = key; + return TRUE; + } + return FALSE; +} + /* If the proxy gets destroyed that's the same as getting an unwatch signal. Make it so. */ static void proxy_destroyed (GObject * proxy, gpointer user_data) { g_return_if_fail(INDICATOR_IS_SERVICE(user_data)); + IndicatorServicePrivate * priv = INDICATOR_SERVICE_GET_PRIVATE(user_data); - const gchar * name = dbus_g_proxy_get_bus_name(DBUS_G_PROXY(proxy)); - unwatch_core(INDICATOR_SERVICE(user_data), name); + hash_table_find_t finddata = {0}; + finddata.proxy = proxy; + + g_hash_table_find(priv->watchers, hash_table_find, &finddata); + unwatch_core(INDICATOR_SERVICE(user_data), finddata.name); return; } @@ -466,6 +489,9 @@ _indicator_service_server_un_watch (IndicatorService * service, DBusGMethodInvoc static void unwatch_core (IndicatorService * service, const gchar * name) { + g_return_if_fail(name != NULL); + g_return_if_fail(INDICATOR_IS_SERVICE(service)); + IndicatorServicePrivate * priv = INDICATOR_SERVICE_GET_PRIVATE(service); /* Remove us from the watcher list here */ diff --git a/tests/Makefile.am b/tests/Makefile.am index 13fef2d..9d5e496 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -304,6 +304,60 @@ TESTS += service-version-tester DISTCLEANFILES += service-version-tester service-version-bad.service service-version-good.service ############################# +# Service Versions +############################# + +check_PROGRAMS += service-version-multiwatch-manager + +service_version_manager_SOURCES = \ + service-version-values.h \ + service-version-multiwatch-manager.c + +service_version_multiwatch_manager_CFLAGS = \ + -Wall -Werror \ + $(LIBINDICATOR_CFLAGS) -I$(top_srcdir) + +service_version_multiwatch_manager_LDADD = \ + $(LIBINDICATOR_LIBS) \ + $(top_builddir)/libindicator/.libs/libindicator.a + +check_PROGRAMS += service-version-multiwatch-manager-impolite + +service_version_manager_impolite_SOURCES = \ + service-version-values.h \ + service-version-multiwatch-manager-impolite.c + +service_version_multiwatch_manager_impolite_CFLAGS = \ + -Wall -Werror \ + $(LIBINDICATOR_CFLAGS) -I$(top_srcdir) + +service_version_multiwatch_manager_impolite_LDADD = \ + $(LIBINDICATOR_LIBS) \ + $(top_builddir)/libindicator/.libs/libindicator.a + +check_PROGRAMS += service-version-multiwatch-service + +service_version_multiwatch_service_SOURCES = \ + service-version-values.h \ + service-version-multiwatch-service.c + +service_version_multiwatch_service_CFLAGS = \ + -Wall -Werror \ + $(LIBINDICATOR_CFLAGS) -I$(top_srcdir) + +service_version_multiwatch_service_LDADD = \ + $(LIBINDICATOR_LIBS) \ + $(top_builddir)/libindicator/.libs/libindicator.a + +service-version-multiwatch-tester: service-version-multiwatch-manager service-version-multiwatch-service service-version-multiwatch-manager-impolite Makefile.am + @echo "#!/bin/sh" > $@ + @echo dbus-test-runner --task ./service-version-multiwatch-service --task-name Service --task ./service-version-multiwatch-manager --task-name Manager1 --task ./service-version-multiwatch-manager --task-name Manager2 --task ./service-version-multiwatch-manager --task-name Manager3 --task ./service-version-multiwatch-manager --task-name Manager4 --task ./service-version-multiwatch-manager --task-name Manager5 --task ./service-version-multiwatch-manager-impolite --task-name Impolite1 --task ./service-version-multiwatch-manager-impolite --task-name Impolite2 --task ./service-version-multiwatch-manager-impolite --task-name Impolite3 >> $@ + @chmod +x $@ + +TESTS += service-version-multiwatch-tester +DISTCLEANFILES += service-version-multiwatch-tester + +############################# # Service Manager Shutdown ############################# diff --git a/tests/Makefile.in b/tests/Makefile.in index 516a9a6..5b2c2a6 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -42,6 +42,9 @@ check_PROGRAMS = test-loader$(EXEEXT) test-desktop-shortcuts$(EXEEXT) \ service-version-manager$(EXEEXT) \ service-version-bad-service$(EXEEXT) \ service-version-good-service$(EXEEXT) \ + service-version-multiwatch-manager$(EXEEXT) \ + service-version-multiwatch-manager-impolite$(EXEEXT) \ + service-version-multiwatch-service$(EXEEXT) \ service-manager-nostart-connect$(EXEEXT) subdir = tests DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in @@ -184,8 +187,7 @@ service_version_good_service_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(service_version_good_service_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ -am_service_version_manager_OBJECTS = \ - service_version_manager-service-version-manager.$(OBJEXT) +am_service_version_manager_OBJECTS = service_version_manager-service-version-multiwatch-manager.$(OBJEXT) service_version_manager_OBJECTS = \ $(am_service_version_manager_OBJECTS) service_version_manager_DEPENDENCIES = $(am__DEPENDENCIES_1) \ @@ -194,6 +196,37 @@ service_version_manager_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(service_version_manager_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ +service_version_multiwatch_manager_SOURCES = \ + service-version-multiwatch-manager.c +service_version_multiwatch_manager_OBJECTS = service_version_multiwatch_manager-service-version-multiwatch-manager.$(OBJEXT) +service_version_multiwatch_manager_DEPENDENCIES = \ + $(am__DEPENDENCIES_1) \ + $(top_builddir)/libindicator/.libs/libindicator.a +service_version_multiwatch_manager_LINK = $(LIBTOOL) $(AM_V_lt) \ + --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ + $(CCLD) $(service_version_multiwatch_manager_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +service_version_multiwatch_manager_impolite_SOURCES = \ + service-version-multiwatch-manager-impolite.c +service_version_multiwatch_manager_impolite_OBJECTS = service_version_multiwatch_manager_impolite-service-version-multiwatch-manager-impolite.$(OBJEXT) +service_version_multiwatch_manager_impolite_DEPENDENCIES = \ + $(am__DEPENDENCIES_1) \ + $(top_builddir)/libindicator/.libs/libindicator.a +service_version_multiwatch_manager_impolite_LINK = $(LIBTOOL) \ + $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) \ + $(service_version_multiwatch_manager_impolite_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +am_service_version_multiwatch_service_OBJECTS = service_version_multiwatch_service-service-version-multiwatch-service.$(OBJEXT) +service_version_multiwatch_service_OBJECTS = \ + $(am_service_version_multiwatch_service_OBJECTS) +service_version_multiwatch_service_DEPENDENCIES = \ + $(am__DEPENDENCIES_1) \ + $(top_builddir)/libindicator/.libs/libindicator.a +service_version_multiwatch_service_LINK = $(LIBTOOL) $(AM_V_lt) \ + --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ + $(CCLD) $(service_version_multiwatch_service_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ am_test_desktop_shortcuts_OBJECTS = \ test_desktop_shortcuts-test-desktop-shortcuts.$(OBJEXT) test_desktop_shortcuts_OBJECTS = $(am_test_desktop_shortcuts_OBJECTS) @@ -246,6 +279,9 @@ SOURCES = $(libdummy_indicator_blank_la_SOURCES) \ $(service_version_bad_service_SOURCES) \ $(service_version_good_service_SOURCES) \ $(service_version_manager_SOURCES) \ + service-version-multiwatch-manager.c \ + service-version-multiwatch-manager-impolite.c \ + $(service_version_multiwatch_service_SOURCES) \ $(test_desktop_shortcuts_SOURCES) $(test_loader_SOURCES) DIST_SOURCES = $(libdummy_indicator_blank_la_SOURCES) \ $(libdummy_indicator_null_la_SOURCES) \ @@ -259,6 +295,9 @@ DIST_SOURCES = $(libdummy_indicator_blank_la_SOURCES) \ $(service_version_bad_service_SOURCES) \ $(service_version_good_service_SOURCES) \ $(service_version_manager_SOURCES) \ + service-version-multiwatch-manager.c \ + service-version-multiwatch-manager-impolite.c \ + $(service_version_multiwatch_service_SOURCES) \ $(test_desktop_shortcuts_SOURCES) $(test_loader_SOURCES) ETAGS = etags CTAGS = ctags @@ -390,6 +429,7 @@ top_srcdir = @top_srcdir@ TESTS = test-desktop-shortcuts-tester service-shutdown-timeout-tester \ service-manager-no-connect-tester \ service-manager-connect-tester service-version-tester \ + service-version-multiwatch-tester \ service-manager-connect-nostart-tester loader-tester DISTCLEANFILES = test-desktop-shortcuts-tester \ test-desktop-shortcuts-touch-test $(DS_XML_REPORT) \ @@ -398,6 +438,7 @@ DISTCLEANFILES = test-desktop-shortcuts-tester \ service-manager-connect-tester session.conf \ service-manager-connect.service service-version-tester \ service-version-bad.service service-version-good.service \ + service-version-multiwatch-tester \ service-manager-connect-nostart-tester loader-tester \ $(XML_REPORT) $(HTML_REPORT) lib_LTLIBRARIES = \ @@ -564,7 +605,7 @@ service_manager_connect_service_LDADD = \ service_version_manager_SOURCES = \ service-version-values.h \ - service-version-manager.c + service-version-multiwatch-manager.c service_version_manager_CFLAGS = \ -Wall -Werror \ @@ -598,6 +639,38 @@ service_version_good_service_LDADD = \ $(LIBINDICATOR_LIBS) \ $(top_builddir)/libindicator/.libs/libindicator.a +service_version_multiwatch_manager_CFLAGS = \ + -Wall -Werror \ + $(LIBINDICATOR_CFLAGS) -I$(top_srcdir) + +service_version_multiwatch_manager_LDADD = \ + $(LIBINDICATOR_LIBS) \ + $(top_builddir)/libindicator/.libs/libindicator.a + +service_version_manager_impolite_SOURCES = \ + service-version-values.h \ + service-version-multiwatch-manager-impolite.c + +service_version_multiwatch_manager_impolite_CFLAGS = \ + -Wall -Werror \ + $(LIBINDICATOR_CFLAGS) -I$(top_srcdir) + +service_version_multiwatch_manager_impolite_LDADD = \ + $(LIBINDICATOR_LIBS) \ + $(top_builddir)/libindicator/.libs/libindicator.a + +service_version_multiwatch_service_SOURCES = \ + service-version-values.h \ + service-version-multiwatch-service.c + +service_version_multiwatch_service_CFLAGS = \ + -Wall -Werror \ + $(LIBINDICATOR_CFLAGS) -I$(top_srcdir) + +service_version_multiwatch_service_LDADD = \ + $(LIBINDICATOR_LIBS) \ + $(top_builddir)/libindicator/.libs/libindicator.a + service_manager_nostart_connect_SOURCES = \ service-manager-nostart-connect.c @@ -721,6 +794,15 @@ service-version-good-service$(EXEEXT): $(service_version_good_service_OBJECTS) $ service-version-manager$(EXEEXT): $(service_version_manager_OBJECTS) $(service_version_manager_DEPENDENCIES) @rm -f service-version-manager$(EXEEXT) $(AM_V_CCLD)$(service_version_manager_LINK) $(service_version_manager_OBJECTS) $(service_version_manager_LDADD) $(LIBS) +service-version-multiwatch-manager$(EXEEXT): $(service_version_multiwatch_manager_OBJECTS) $(service_version_multiwatch_manager_DEPENDENCIES) + @rm -f service-version-multiwatch-manager$(EXEEXT) + $(AM_V_CCLD)$(service_version_multiwatch_manager_LINK) $(service_version_multiwatch_manager_OBJECTS) $(service_version_multiwatch_manager_LDADD) $(LIBS) +service-version-multiwatch-manager-impolite$(EXEEXT): $(service_version_multiwatch_manager_impolite_OBJECTS) $(service_version_multiwatch_manager_impolite_DEPENDENCIES) + @rm -f service-version-multiwatch-manager-impolite$(EXEEXT) + $(AM_V_CCLD)$(service_version_multiwatch_manager_impolite_LINK) $(service_version_multiwatch_manager_impolite_OBJECTS) $(service_version_multiwatch_manager_impolite_LDADD) $(LIBS) +service-version-multiwatch-service$(EXEEXT): $(service_version_multiwatch_service_OBJECTS) $(service_version_multiwatch_service_DEPENDENCIES) + @rm -f service-version-multiwatch-service$(EXEEXT) + $(AM_V_CCLD)$(service_version_multiwatch_service_LINK) $(service_version_multiwatch_service_OBJECTS) $(service_version_multiwatch_service_LDADD) $(LIBS) test-desktop-shortcuts$(EXEEXT): $(test_desktop_shortcuts_OBJECTS) $(test_desktop_shortcuts_DEPENDENCIES) @rm -f test-desktop-shortcuts$(EXEEXT) $(AM_V_CCLD)$(test_desktop_shortcuts_LINK) $(test_desktop_shortcuts_OBJECTS) $(test_desktop_shortcuts_LDADD) $(LIBS) @@ -745,7 +827,10 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/service_shutdown_timeout-service-shutdown-timeout.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/service_version_bad_service-service-version-bad-service.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/service_version_good_service-service-version-good-service.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/service_version_manager-service-version-manager.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/service_version_manager-service-version-multiwatch-manager.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/service_version_multiwatch_manager-service-version-multiwatch-manager.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/service_version_multiwatch_manager_impolite-service-version-multiwatch-manager-impolite.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/service_version_multiwatch_service-service-version-multiwatch-service.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_desktop_shortcuts-test-desktop-shortcuts.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_loader-test-loader.Po@am__quote@ @@ -917,21 +1002,69 @@ service_version_good_service-service-version-good-service.obj: service-version-g @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_good_service_CFLAGS) $(CFLAGS) -c -o service_version_good_service-service-version-good-service.obj `if test -f 'service-version-good-service.c'; then $(CYGPATH_W) 'service-version-good-service.c'; else $(CYGPATH_W) '$(srcdir)/service-version-good-service.c'; fi` -service_version_manager-service-version-manager.o: service-version-manager.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_manager_CFLAGS) $(CFLAGS) -MT service_version_manager-service-version-manager.o -MD -MP -MF $(DEPDIR)/service_version_manager-service-version-manager.Tpo -c -o service_version_manager-service-version-manager.o `test -f 'service-version-manager.c' || echo '$(srcdir)/'`service-version-manager.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/service_version_manager-service-version-manager.Tpo $(DEPDIR)/service_version_manager-service-version-manager.Po +service_version_manager-service-version-multiwatch-manager.o: service-version-multiwatch-manager.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_manager_CFLAGS) $(CFLAGS) -MT service_version_manager-service-version-multiwatch-manager.o -MD -MP -MF $(DEPDIR)/service_version_manager-service-version-multiwatch-manager.Tpo -c -o service_version_manager-service-version-multiwatch-manager.o `test -f 'service-version-multiwatch-manager.c' || echo '$(srcdir)/'`service-version-multiwatch-manager.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/service_version_manager-service-version-multiwatch-manager.Tpo $(DEPDIR)/service_version_manager-service-version-multiwatch-manager.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='service-version-multiwatch-manager.c' object='service_version_manager-service-version-multiwatch-manager.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_manager_CFLAGS) $(CFLAGS) -c -o service_version_manager-service-version-multiwatch-manager.o `test -f 'service-version-multiwatch-manager.c' || echo '$(srcdir)/'`service-version-multiwatch-manager.c + +service_version_manager-service-version-multiwatch-manager.obj: service-version-multiwatch-manager.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_manager_CFLAGS) $(CFLAGS) -MT service_version_manager-service-version-multiwatch-manager.obj -MD -MP -MF $(DEPDIR)/service_version_manager-service-version-multiwatch-manager.Tpo -c -o service_version_manager-service-version-multiwatch-manager.obj `if test -f 'service-version-multiwatch-manager.c'; then $(CYGPATH_W) 'service-version-multiwatch-manager.c'; else $(CYGPATH_W) '$(srcdir)/service-version-multiwatch-manager.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/service_version_manager-service-version-multiwatch-manager.Tpo $(DEPDIR)/service_version_manager-service-version-multiwatch-manager.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='service-version-multiwatch-manager.c' object='service_version_manager-service-version-multiwatch-manager.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_manager_CFLAGS) $(CFLAGS) -c -o service_version_manager-service-version-multiwatch-manager.obj `if test -f 'service-version-multiwatch-manager.c'; then $(CYGPATH_W) 'service-version-multiwatch-manager.c'; else $(CYGPATH_W) '$(srcdir)/service-version-multiwatch-manager.c'; fi` + +service_version_multiwatch_manager-service-version-multiwatch-manager.o: service-version-multiwatch-manager.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_multiwatch_manager_CFLAGS) $(CFLAGS) -MT service_version_multiwatch_manager-service-version-multiwatch-manager.o -MD -MP -MF $(DEPDIR)/service_version_multiwatch_manager-service-version-multiwatch-manager.Tpo -c -o service_version_multiwatch_manager-service-version-multiwatch-manager.o `test -f 'service-version-multiwatch-manager.c' || echo '$(srcdir)/'`service-version-multiwatch-manager.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/service_version_multiwatch_manager-service-version-multiwatch-manager.Tpo $(DEPDIR)/service_version_multiwatch_manager-service-version-multiwatch-manager.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='service-version-multiwatch-manager.c' object='service_version_multiwatch_manager-service-version-multiwatch-manager.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_multiwatch_manager_CFLAGS) $(CFLAGS) -c -o service_version_multiwatch_manager-service-version-multiwatch-manager.o `test -f 'service-version-multiwatch-manager.c' || echo '$(srcdir)/'`service-version-multiwatch-manager.c + +service_version_multiwatch_manager-service-version-multiwatch-manager.obj: service-version-multiwatch-manager.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_multiwatch_manager_CFLAGS) $(CFLAGS) -MT service_version_multiwatch_manager-service-version-multiwatch-manager.obj -MD -MP -MF $(DEPDIR)/service_version_multiwatch_manager-service-version-multiwatch-manager.Tpo -c -o service_version_multiwatch_manager-service-version-multiwatch-manager.obj `if test -f 'service-version-multiwatch-manager.c'; then $(CYGPATH_W) 'service-version-multiwatch-manager.c'; else $(CYGPATH_W) '$(srcdir)/service-version-multiwatch-manager.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/service_version_multiwatch_manager-service-version-multiwatch-manager.Tpo $(DEPDIR)/service_version_multiwatch_manager-service-version-multiwatch-manager.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='service-version-manager.c' object='service_version_manager-service-version-manager.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='service-version-multiwatch-manager.c' object='service_version_multiwatch_manager-service-version-multiwatch-manager.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_manager_CFLAGS) $(CFLAGS) -c -o service_version_manager-service-version-manager.o `test -f 'service-version-manager.c' || echo '$(srcdir)/'`service-version-manager.c +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_multiwatch_manager_CFLAGS) $(CFLAGS) -c -o service_version_multiwatch_manager-service-version-multiwatch-manager.obj `if test -f 'service-version-multiwatch-manager.c'; then $(CYGPATH_W) 'service-version-multiwatch-manager.c'; else $(CYGPATH_W) '$(srcdir)/service-version-multiwatch-manager.c'; fi` -service_version_manager-service-version-manager.obj: service-version-manager.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_manager_CFLAGS) $(CFLAGS) -MT service_version_manager-service-version-manager.obj -MD -MP -MF $(DEPDIR)/service_version_manager-service-version-manager.Tpo -c -o service_version_manager-service-version-manager.obj `if test -f 'service-version-manager.c'; then $(CYGPATH_W) 'service-version-manager.c'; else $(CYGPATH_W) '$(srcdir)/service-version-manager.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/service_version_manager-service-version-manager.Tpo $(DEPDIR)/service_version_manager-service-version-manager.Po +service_version_multiwatch_manager_impolite-service-version-multiwatch-manager-impolite.o: service-version-multiwatch-manager-impolite.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_multiwatch_manager_impolite_CFLAGS) $(CFLAGS) -MT service_version_multiwatch_manager_impolite-service-version-multiwatch-manager-impolite.o -MD -MP -MF $(DEPDIR)/service_version_multiwatch_manager_impolite-service-version-multiwatch-manager-impolite.Tpo -c -o service_version_multiwatch_manager_impolite-service-version-multiwatch-manager-impolite.o `test -f 'service-version-multiwatch-manager-impolite.c' || echo '$(srcdir)/'`service-version-multiwatch-manager-impolite.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/service_version_multiwatch_manager_impolite-service-version-multiwatch-manager-impolite.Tpo $(DEPDIR)/service_version_multiwatch_manager_impolite-service-version-multiwatch-manager-impolite.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='service-version-manager.c' object='service_version_manager-service-version-manager.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='service-version-multiwatch-manager-impolite.c' object='service_version_multiwatch_manager_impolite-service-version-multiwatch-manager-impolite.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_manager_CFLAGS) $(CFLAGS) -c -o service_version_manager-service-version-manager.obj `if test -f 'service-version-manager.c'; then $(CYGPATH_W) 'service-version-manager.c'; else $(CYGPATH_W) '$(srcdir)/service-version-manager.c'; fi` +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_multiwatch_manager_impolite_CFLAGS) $(CFLAGS) -c -o service_version_multiwatch_manager_impolite-service-version-multiwatch-manager-impolite.o `test -f 'service-version-multiwatch-manager-impolite.c' || echo '$(srcdir)/'`service-version-multiwatch-manager-impolite.c + +service_version_multiwatch_manager_impolite-service-version-multiwatch-manager-impolite.obj: service-version-multiwatch-manager-impolite.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_multiwatch_manager_impolite_CFLAGS) $(CFLAGS) -MT service_version_multiwatch_manager_impolite-service-version-multiwatch-manager-impolite.obj -MD -MP -MF $(DEPDIR)/service_version_multiwatch_manager_impolite-service-version-multiwatch-manager-impolite.Tpo -c -o service_version_multiwatch_manager_impolite-service-version-multiwatch-manager-impolite.obj `if test -f 'service-version-multiwatch-manager-impolite.c'; then $(CYGPATH_W) 'service-version-multiwatch-manager-impolite.c'; else $(CYGPATH_W) '$(srcdir)/service-version-multiwatch-manager-impolite.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/service_version_multiwatch_manager_impolite-service-version-multiwatch-manager-impolite.Tpo $(DEPDIR)/service_version_multiwatch_manager_impolite-service-version-multiwatch-manager-impolite.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='service-version-multiwatch-manager-impolite.c' object='service_version_multiwatch_manager_impolite-service-version-multiwatch-manager-impolite.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_multiwatch_manager_impolite_CFLAGS) $(CFLAGS) -c -o service_version_multiwatch_manager_impolite-service-version-multiwatch-manager-impolite.obj `if test -f 'service-version-multiwatch-manager-impolite.c'; then $(CYGPATH_W) 'service-version-multiwatch-manager-impolite.c'; else $(CYGPATH_W) '$(srcdir)/service-version-multiwatch-manager-impolite.c'; fi` + +service_version_multiwatch_service-service-version-multiwatch-service.o: service-version-multiwatch-service.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_multiwatch_service_CFLAGS) $(CFLAGS) -MT service_version_multiwatch_service-service-version-multiwatch-service.o -MD -MP -MF $(DEPDIR)/service_version_multiwatch_service-service-version-multiwatch-service.Tpo -c -o service_version_multiwatch_service-service-version-multiwatch-service.o `test -f 'service-version-multiwatch-service.c' || echo '$(srcdir)/'`service-version-multiwatch-service.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/service_version_multiwatch_service-service-version-multiwatch-service.Tpo $(DEPDIR)/service_version_multiwatch_service-service-version-multiwatch-service.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='service-version-multiwatch-service.c' object='service_version_multiwatch_service-service-version-multiwatch-service.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_multiwatch_service_CFLAGS) $(CFLAGS) -c -o service_version_multiwatch_service-service-version-multiwatch-service.o `test -f 'service-version-multiwatch-service.c' || echo '$(srcdir)/'`service-version-multiwatch-service.c + +service_version_multiwatch_service-service-version-multiwatch-service.obj: service-version-multiwatch-service.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_multiwatch_service_CFLAGS) $(CFLAGS) -MT service_version_multiwatch_service-service-version-multiwatch-service.obj -MD -MP -MF $(DEPDIR)/service_version_multiwatch_service-service-version-multiwatch-service.Tpo -c -o service_version_multiwatch_service-service-version-multiwatch-service.obj `if test -f 'service-version-multiwatch-service.c'; then $(CYGPATH_W) 'service-version-multiwatch-service.c'; else $(CYGPATH_W) '$(srcdir)/service-version-multiwatch-service.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/service_version_multiwatch_service-service-version-multiwatch-service.Tpo $(DEPDIR)/service_version_multiwatch_service-service-version-multiwatch-service.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='service-version-multiwatch-service.c' object='service_version_multiwatch_service-service-version-multiwatch-service.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(service_version_multiwatch_service_CFLAGS) $(CFLAGS) -c -o service_version_multiwatch_service-service-version-multiwatch-service.obj `if test -f 'service-version-multiwatch-service.c'; then $(CYGPATH_W) 'service-version-multiwatch-service.c'; else $(CYGPATH_W) '$(srcdir)/service-version-multiwatch-service.c'; fi` test_desktop_shortcuts-test-desktop-shortcuts.o: test-desktop-shortcuts.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_desktop_shortcuts_CFLAGS) $(CFLAGS) -MT test_desktop_shortcuts-test-desktop-shortcuts.o -MD -MP -MF $(DEPDIR)/test_desktop_shortcuts-test-desktop-shortcuts.Tpo -c -o test_desktop_shortcuts-test-desktop-shortcuts.o `test -f 'test-desktop-shortcuts.c' || echo '$(srcdir)/'`test-desktop-shortcuts.c @@ -1315,6 +1448,11 @@ service-version-tester: service-version-manager service-version-bad-service serv @echo dbus-test-runner --dbus-config $(builddir)/session.conf --task ./service-version-manager >> $@ @chmod +x $@ +service-version-multiwatch-tester: service-version-multiwatch-manager service-version-multiwatch-service service-version-multiwatch-manager-impolite Makefile.am + @echo "#!/bin/sh" > $@ + @echo dbus-test-runner --task ./service-version-multiwatch-service --task-name Service --task ./service-version-multiwatch-manager --task-name Manager1 --task ./service-version-multiwatch-manager --task-name Manager2 --task ./service-version-multiwatch-manager --task-name Manager3 --task ./service-version-multiwatch-manager --task-name Manager4 --task ./service-version-multiwatch-manager --task-name Manager5 --task ./service-version-multiwatch-manager-impolite --task-name Impolite1 --task ./service-version-multiwatch-manager-impolite --task-name Impolite2 --task ./service-version-multiwatch-manager-impolite --task-name Impolite3 >> $@ + @chmod +x $@ + service-manager-connect-nostart-tester: service-manager-nostart-connect service-manager-connect-service Makefile.am @echo "#!/bin/sh" > $@ @echo dbus-test-runner --task ./service-manager-nostart-connect --task ./service-manager-connect-service >> $@ diff --git a/tests/service-version-good-service.c b/tests/service-version-good-service.c index bcfe46d..12a6a32 100644 --- a/tests/service-version-good-service.c +++ b/tests/service-version-good-service.c @@ -5,12 +5,19 @@ static GMainLoop * mainloop = NULL; static gboolean passed = FALSE; +static IndicatorService * is = NULL; gboolean timeout (gpointer data) { passed = FALSE; g_debug("Timeout with no shutdown."); + + if (is != NULL) { + g_object_unref(is); + is = NULL; + } + g_main_loop_quit(mainloop); return FALSE; } @@ -20,6 +27,12 @@ shutdown (void) { g_debug("Shutdown"); passed = TRUE; + + if (is != NULL) { + g_object_unref(is); + is = NULL; + } + g_main_loop_quit(mainloop); return; } @@ -29,7 +42,7 @@ main (int argc, char ** argv) { g_type_init(); - IndicatorService * is = indicator_service_new_version("org.ayatana.version.good", SERVICE_VERSION_GOOD); + is = indicator_service_new_version("org.ayatana.version.good", SERVICE_VERSION_GOOD); g_signal_connect(G_OBJECT(is), INDICATOR_SERVICE_SIGNAL_SHUTDOWN, shutdown, NULL); g_timeout_add_seconds(1, timeout, NULL); diff --git a/tests/service-version-multiwatch-manager-impolite.c b/tests/service-version-multiwatch-manager-impolite.c new file mode 100644 index 0000000..8bfd3c6 --- /dev/null +++ b/tests/service-version-multiwatch-manager-impolite.c @@ -0,0 +1,61 @@ + +#include <glib.h> +#include "libindicator/indicator-service-manager.h" +#include "service-version-values.h" + +static GMainLoop * mainloop = NULL; +static gboolean passed = FALSE; +static IndicatorServiceManager * goodis = NULL; + +gboolean +timeout (gpointer data) +{ + g_debug("Timeout."); + passed = FALSE; + g_main_loop_quit(mainloop); + return FALSE; +} + +void +connection_good (IndicatorServiceManager * sm, gboolean connected, gpointer user_data) +{ + if (!connected) return; + g_debug("Connection From Service."); + passed = TRUE; + g_main_loop_quit(mainloop); + return; +} + +gboolean +delay_start (gpointer data) +{ + g_debug("Starting Manager"); + + goodis = indicator_service_manager_new_version("org.ayatana.version.good", SERVICE_VERSION_GOOD); + g_signal_connect(G_OBJECT(goodis), INDICATOR_SERVICE_MANAGER_SIGNAL_CONNECTION_CHANGE, G_CALLBACK(connection_good), NULL); + + g_timeout_add_seconds(1, timeout, NULL); + + return FALSE; +} + +int +main (int argc, char ** argv) +{ + g_type_init(); + g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL); + g_print("Manager: DBUS_SESSION_BUS_ADDRESS = %s\n", g_getenv("DBUS_SESSION_BUS_ADDRESS")); + + g_timeout_add(500, delay_start, NULL); + + mainloop = g_main_loop_new(NULL, FALSE); + g_main_loop_run(mainloop); + + g_debug("Quiting"); + if (passed) { + g_debug("Passed"); + return 0; + } + g_debug("Failed"); + return 1; +} diff --git a/tests/service-version-multiwatch-manager.c b/tests/service-version-multiwatch-manager.c new file mode 100644 index 0000000..771426f --- /dev/null +++ b/tests/service-version-multiwatch-manager.c @@ -0,0 +1,63 @@ + +#include <glib.h> +#include "libindicator/indicator-service-manager.h" +#include "service-version-values.h" + +static GMainLoop * mainloop = NULL; +static gboolean passed = FALSE; +static IndicatorServiceManager * goodis = NULL; + +gboolean +timeout (gpointer data) +{ + g_debug("Timeout."); + passed = FALSE; + g_main_loop_quit(mainloop); + return FALSE; +} + +void +connection_good (IndicatorServiceManager * sm, gboolean connected, gpointer user_data) +{ + if (!connected) return; + g_debug("Connection From Service."); + passed = TRUE; + g_main_loop_quit(mainloop); + return; +} + +gboolean +delay_start (gpointer data) +{ + g_debug("Starting Manager"); + + goodis = indicator_service_manager_new_version("org.ayatana.version.good", SERVICE_VERSION_GOOD); + g_signal_connect(G_OBJECT(goodis), INDICATOR_SERVICE_MANAGER_SIGNAL_CONNECTION_CHANGE, G_CALLBACK(connection_good), NULL); + + g_timeout_add_seconds(1, timeout, NULL); + + return FALSE; +} + +int +main (int argc, char ** argv) +{ + g_type_init(); + g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL); + g_print("Manager: DBUS_SESSION_BUS_ADDRESS = %s\n", g_getenv("DBUS_SESSION_BUS_ADDRESS")); + + g_timeout_add(500, delay_start, NULL); + + mainloop = g_main_loop_new(NULL, FALSE); + g_main_loop_run(mainloop); + + g_object_unref(goodis); + + g_debug("Quiting"); + if (passed) { + g_debug("Passed"); + return 0; + } + g_debug("Failed"); + return 1; +} diff --git a/tests/service-version-multiwatch-service.c b/tests/service-version-multiwatch-service.c new file mode 100644 index 0000000..9920306 --- /dev/null +++ b/tests/service-version-multiwatch-service.c @@ -0,0 +1,48 @@ + +#include <glib.h> +#include "libindicator/indicator-service.h" +#include "service-version-values.h" + +static GMainLoop * mainloop = NULL; +static gboolean passed = FALSE; + +gboolean +timeout (gpointer data) +{ + passed = FALSE; + g_debug("Timeout with no shutdown."); + g_main_loop_quit(mainloop); + return FALSE; +} + +void +shutdown (void) +{ + g_debug("Shutdown"); + passed = TRUE; + g_main_loop_quit(mainloop); + return; +} + +int +main (int argc, char ** argv) +{ + g_type_init(); + g_debug("Service starting"); + + IndicatorService * is = indicator_service_new_version("org.ayatana.version.good", SERVICE_VERSION_GOOD); + g_signal_connect(G_OBJECT(is), INDICATOR_SERVICE_SIGNAL_SHUTDOWN, shutdown, NULL); + + g_timeout_add_seconds(2, timeout, NULL); + + mainloop = g_main_loop_new(NULL, FALSE); + g_main_loop_run(mainloop); + + g_debug("Quiting"); + if (passed) { + g_debug("Passed"); + return 0; + } + g_debug("Failed"); + return 1; +} |