Changeset 96
- Timestamp:
- 07/01/08 19:22:32 (2 months ago)
- Files:
-
- mh-home-sysmon/trunk/Makefile (modified) (1 diff)
- mh-home-sysmon/trunk/debian/changelog (modified) (1 diff)
- mh-home-sysmon/trunk/debian/control (modified) (1 diff)
- mh-home-sysmon/trunk/mh-cpu-source.c (modified) (1 diff)
- mh-home-sysmon/trunk/mh-home-sysmon.c (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
mh-home-sysmon/trunk/Makefile
r93 r96 1 CFLAGS += -W -Wall `pkg-config libhildondesktop--cflags`2 LDFLAGS += -g `pkg-config libhildondesktop--libs`1 CFLAGS += -W -Wall `pkg-config dbus-glib-1 libhildondesktop mce --cflags` 2 LDFLAGS += -g `pkg-config dbus-glib-1 libhildondesktop mce --libs` 3 3 4 4 SOURCES := $(wildcard *.c) mh-home-sysmon/trunk/debian/changelog
r93 r96 1 mh-home-sysmon (0.0.2) unstable; urgency=low 2 3 * Handle {back,fore}ground signals and mce display off signal. 4 * Fix file descriptor leak. 5 6 -- Santtu Lakkala <inz@inz.fi> Tue, 1 Jul 2008 19:20:04 +0300 7 1 8 mh-home-sysmon (0.0.1) unstable; urgency=low 2 9 mh-home-sysmon/trunk/debian/control
r93 r96 3 3 Priority: optional 4 4 Maintainer: Santtu Lakkala <inz@inz.fi> 5 Build-Depends: debhelper (>= 4.0.0), libhildondesktop-dev, libgtk2.0-dev, osso-af-settings 5 Build-Depends: debhelper (>= 4.0.0), libhildondesktop-dev, libgtk2.0-dev, osso-af-settings, mce-dev, libdbus-glib-1-dev 6 6 Standards-Version: 3.6.1 7 7 mh-home-sysmon/trunk/mh-cpu-source.c
r93 r96 43 43 FILE *proc_stat = fopen("/proc/stat", "r"); 44 44 fscanf(proc_stat, "cpu %u %u %u %u", &user, &nice, &kern, &idle); 45 fclose(proc_stat); 46 45 47 change = user + nice + kern + idle - data->prev; 46 48 data->prev = user + nice + kern + idle; mh-home-sysmon/trunk/mh-home-sysmon.c
r93 r96 4 4 #include <stdlib.h> 5 5 6 #include <dbus/dbus-glib.h> 7 6 8 #ifndef GTKDEBUG 9 #include <mce/dbus-names.h> 10 #include <mce/mode-names.h> 7 11 #include <libhildondesktop/libhildondesktop.h> 8 12 #endif … … 15 19 16 20 #include <stdio.h> 21 #include <string.h> 17 22 18 23 #define MH_HOME_SYSMON_GET_PRIVATE(x) (G_TYPE_INSTANCE_GET_PRIVATE((x), MH_TYPE_HOME_SYSMON, MhHomeSysmonPrivate)) … … 23 28 GQueue *solid_data; 24 29 30 #ifndef GTKDEBUG 31 DBusGConnection *gconn; 32 DBusGProxy *proxy; 33 #endif 34 25 35 DataSource *line_source; 26 36 DataSource *solid_source; … … 30 40 guint datapoints; 31 41 guint timer_source; 42 43 gboolean foreground; 32 44 }; 33 45 … … 55 67 gint padding, 56 68 const gchar *markup, TextAlign align); 69 static void mh_home_sysmon_foreground(HildonDesktopHomeItem *item); 70 static void mh_home_sysmon_background(HildonDesktopHomeItem *item); 71 static void mh_home_sysmon_display_ind(DBusGProxy *proxy, 72 gchar *display_state, 73 MhHomeSysmon *sysmon); 57 74 58 75 #ifndef GTKDEBUG … … 69 86 g_queue_free(priv->line_data); 70 87 g_queue_free(priv->solid_data); 88 89 g_object_unref(priv->proxy); 90 g_object_unref(priv->gconn); 71 91 } 72 92 … … 94 114 priv->timer_source = 95 115 g_timeout_add(5000, mh_home_sysmon_update, plugin); 116 117 priv->foreground = TRUE; 96 118 97 119 gtk_widget_set_size_request(GTK_WIDGET(plugin), 140, 140); … … 100 122 (plugin), 101 123 HILDON_DESKTOP_HOME_ITEM_RESIZE_BOTH); 124 125 priv->gconn = dbus_g_bus_get(DBUS_BUS_SYSTEM, NULL); 126 priv->proxy = dbus_g_proxy_new_for_name(priv->gconn, 127 MCE_SERVICE, 128 MCE_SIGNAL_PATH, 129 MCE_SIGNAL_IF); 130 dbus_g_proxy_add_signal(priv->proxy, 131 MCE_DISPLAY_SIG, 132 G_TYPE_STRING, 133 G_TYPE_INVALID); 134 dbus_g_proxy_connect_signal(priv->proxy, 135 MCE_DISPLAY_SIG, 136 G_CALLBACK(mh_home_sysmon_display_ind), 137 plugin, 138 NULL); 102 139 #endif 103 140 … … 109 146 GObjectClass *object_class = G_OBJECT_CLASS(klass); 110 147 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass); 148 HildonDesktopHomeItemClass *item_class = 149 HILDON_DESKTOP_HOME_ITEM_CLASS(klass); 111 150 g_type_class_add_private(klass, sizeof(MhHomeSysmonPrivate)); 112 151 … … 115 154 widget_class->expose_event = mh_home_sysmon_expose; 116 155 widget_class->screen_changed = mh_home_sysmon_screen_changed; 156 157 item_class->background = mh_home_sysmon_background; 158 item_class->foreground = mh_home_sysmon_foreground; 117 159 } 118 160 … … 155 197 GdkEventExpose *event) 156 198 { 157 cairo_t *cr = gdk_cairo_create(GDK_DRAWABLE(widget->window));199 cairo_t *cr; 158 200 GtkRequisition req; 159 201 cairo_path_t *path; … … 165 207 166 208 cairo_pattern_t *pattern; 209 167 210 (void)event; 168 211 212 if (!priv->foreground) { 213 return TRUE; 214 } 215 216 cr = gdk_cairo_create(GDK_DRAWABLE(widget->window)); 169 217 req.height = widget->allocation.height; 170 218 req.width = widget->allocation.width; … … 319 367 g_object_unref(layout); 320 368 } 369 370 static void mh_home_sysmon_foreground(HildonDesktopHomeItem *item) 371 { 372 MhHomeSysmonPrivate *priv = MH_HOME_SYSMON_GET_PRIVATE(item); 373 374 priv->foreground = TRUE; 375 } 376 377 static void mh_home_sysmon_background(HildonDesktopHomeItem *item) 378 { 379 MhHomeSysmonPrivate *priv = MH_HOME_SYSMON_GET_PRIVATE(item); 380 381 priv->foreground = FALSE; 382 } 383 384 #ifndef GTKDEBUG 385 static void mh_home_sysmon_display_ind(DBusGProxy *proxy, 386 gchar *display_state, 387 MhHomeSysmon *sysmon) 388 { 389 MhHomeSysmonPrivate *priv = MH_HOME_SYSMON_GET_PRIVATE(sysmon); 390 391 (void)proxy; 392 393 if (strcmp(display_state, MCE_DISPLAY_OFF_STRING) == 0) 394 { 395 if (priv->timer_source) { 396 g_source_remove(priv->timer_source); 397 } 398 } else { 399 if (!priv->timer_source) { 400 priv->timer_source = 401 g_timeout_add(5000, 402 mh_home_sysmon_update, sysmon); 403 } 404 } 405 } 406 #endif
