On 09/19/2011 07:49 PM, Maciej Marcin Piechotka wrote:
On Mon, 2011-09-19 at 13:24 +0200, Zbigniew Jędrzejewski-Szmek wrote:
diff --git a/configure.ac b/configure.ac
index ca07456..5e4b483 100644
--- a/configure.ac
+++ b/configure.ac
@@ -348,7 +348,13 @@ AM_CONDITIONAL(LIBNOTIFY07, [ test "$libnotify07"
= "yes" ])

  AM_PROG_VALAC([0.10])
  AC_SUBST(VAPIDIR)
-AM_CONDITIONAL(HAVE_VALAC, test x"$VALAC" != x)
+AM_CONDITIONAL(HAVE_VALAC, [ test x"$VALAC" != x"" ])
+
+PKG_CHECK_MODULES(LIBGEE, [ gee-1.0 ])
+PKG_CHECK_EXISTS([ gee-1.0 ], [ libgee=yes ])
+AC_SUBST(LIBGEE_CFLAGS)
+AC_SUBST(LIBGEE_LIBS)
+AM_CONDITIONAL(HAVE_LIBGEE, [ test x"$libgee" = x"yes" ])

  AC_PATH_PROG([XSLTPROC], [xsltproc])
  AM_CONDITIONAL(HAVE_XSLTPROC, test x"$XSLTPROC" != x)

I don't think you should:

  - Hard autodetect. Soft autodetection is usually considered fine - such
as in gtk (soft autodetection - --enable-gtk forces build, --disable-gtk
disables it and lack of it dis/enables feature automatically). It may
cause problems for example on Gentoo and may make the life of packagers
in other systems harder.
  - Rename HAVE_GTK to HAVE_LIBGEE

Probably the easiest way is to add the entries to change:

-        PKG_CHECK_MODULES(GTK, [ gtk+-2.0 glib-2.0>  2.26 gio-unix-2.0
],
+        PKG_CHECK_MODULES(GTK, [ gtk+-2.0 glib-2.0>  2.26 gio-unix-2.0
libgee-1.0 ],

Hi,
HAVE_LIBGEE was added to distinguish different dependencies of systemadm and gnome-ask-password-agent. But I guess that indeed having a separate HAVE_LIBGEE is not worth the trouble. An improved patch which just makes HAVE_GTK dependent on libgee is below.

Best,
Zbyszek

---
 Makefile.am        |    1 +
 configure.ac       |    2 +-
 src/systemadm.vala |   14 ++++++++++++++
 3 files changed, 16 insertions(+), 1 deletions(-)

diff --git Makefile.am Makefile.am
index ec0f7b5..0712945 100644
--- Makefile.am
+++ Makefile.am
@@ -1432,6 +1432,7 @@ systemadm_CFLAGS = \
 systemadm_VALAFLAGS = \
        --pkg=posix \
        --pkg=gtk+-2.0 \
+       --pkg=gee-1.0 \
        -g

 systemadm_LDADD = \
diff --git configure.ac configure.ac
index ca07456..b2411c9 100644
--- configure.ac
+++ configure.ac
@@ -327,7 +327,7 @@ AM_CONDITIONAL(ENABLE_LOCALED, [test "$have_localed" = "yes"])
 have_gtk=no
 AC_ARG_ENABLE(gtk, AS_HELP_STRING([--disable-gtk], [disable GTK tools]))
 if test "x$enable_gtk" != "xno"; then
-        PKG_CHECK_MODULES(GTK, [ gtk+-2.0 glib-2.0 > 2.26 gio-unix-2.0 ],
+ PKG_CHECK_MODULES(GTK, [ gtk+-2.0 glib-2.0 > 2.26 gio-unix-2.0 gee-1.0], [AC_DEFINE(HAVE_GTK, 1, [Define if GTK is available]) have_gtk=yes], have_gtk=no)
         AC_SUBST(GTK_CFLAGS)
         AC_SUBST(GTK_LIBS)
diff --git src/systemadm.vala src/systemadm.vala
index 68652d0..c893da0 100644
--- src/systemadm.vala
+++ src/systemadm.vala
@@ -79,6 +79,8 @@ public class MainWindow : Window {
         private ListStore unit_model;
         private ListStore job_model;

+        private Gee.HashMap<string, Unit> unit_map;
+
         private Button start_button;
         private Button stop_button;
         private Button restart_button;
@@ -180,6 +182,8 @@ public class MainWindow : Window {
unit_model = new ListStore(7, typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(Unit)); job_model = new ListStore(6, typeof(string), typeof(string), typeof(string), typeof(string), typeof(Job), typeof(uint32));

+                unit_map = new Gee.HashMap<string, Unit>();
+
                 TreeModelFilter unit_model_filter;
                 unit_model_filter = new TreeModelFilter(unit_model, null);
                 unit_model_filter.set_visible_func(unit_filter);
@@ -355,6 +359,8 @@ public class MainWindow : Window {
                                         "org.freedesktop.systemd1",
                                         i.unit_path);

+                        unit_map[i.id] = u;
+
                         unit_model.append(out iter);
                         unit_model.set(iter,
                                        0, i.id,
@@ -415,6 +421,10 @@ public class MainWindow : Window {
                 return u;
         }

+        public Unit? get_unit(string id) {
+                return this.unit_map[id];
+        }
+
         public void unit_changed() {
                 Unit u = get_current_unit();

@@ -712,6 +722,8 @@ public class MainWindow : Window {
                                         "org.freedesktop.systemd1",
                                         path);

+                        unit_map[id] = u;
+
                         update_unit_iter(iter, id, u);
                 } catch (IOError e) {
                         show_error(e.message);
@@ -773,6 +785,8 @@ public class MainWindow : Window {
                         }

                 } while (unit_model.iter_next(ref iter));
+
+                unit_map.unset(id);
         }

public void on_job_removed(uint32 id, ObjectPath path, string res) {
--
1.7.6

_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to