summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac16
-rw-r--r--plugins/udisks/udisks-plugin.c54
2 files changed, 46 insertions, 24 deletions
diff --git a/configure.ac b/configure.ac
index 5398f1d..4210b3b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -103,9 +103,10 @@ LIBMATENOTIFY_CFLAGS=
LIBMATENOTIFY_LIBS=
# enable support even if not specifically asked for
-AC_ARG_ENABLE(libmatenotify, [ --enable-libmatenotify enable libmatenotify support], [
- enable_libmatenotify=$enableval], [
- enable_libmatenotify="yes"
+AC_ARG_ENABLE(libmatenotify,
+[ --enable-libmatenotify Enable libmatenotify support], [
+ enable_libmatenotify=$enableval], [
+ enable_libmatenotify="yes"
])
if test "x$enable_libmatenotify" = "xno"
@@ -167,7 +168,7 @@ AC_SUBST(LIBSENSORS_LIBS)
# do nvidia by default if available
AC_ARG_WITH(nvidia,
-[ --with-nvidia[=DIR] use nvidia in DIR],[
+[ --with-nvidia[=DIR] use nvidia in DIR],[
if test "$withval" != "no" -a "$withval" != "yes"; then
NVIDIA_DIR=$withval
CFLAGS="${CFLAGS} -I${NVIDIA_DIR}/include"
@@ -181,7 +182,7 @@ if test "$with_nvidia" = "no"; then
echo "Disabling nvidia support"
else
AC_ARG_WITH(x11,
- [ --with-x11[=DIR] use x11 in DIR],[
+ [ --with-x11[=DIR] use x11 in DIR],[
if test "$withval" != "no" -a "$withval" != "yes"; then
X11_DIR=$withval
CFLAGS="${CFLAGS} -I${X11_DIR}/include"
@@ -215,8 +216,9 @@ AM_CONDITIONAL(NVIDIA, test -n "$NVIDIA_LIBS")
AC_SUBST(NVIDIA_CFLAGS)
AC_SUBST(NVIDIA_LIBS)
-AC_ARG_WITH(aticonfig, [
- --with-aticonfig[=PATH] use aticonfig provided by PATH], [
+AC_ARG_WITH(aticonfig,
+[ --with-aticonfig[=PATH] use aticonfig plugin with optional binary provided
+ by PATH], [
if test "$withval" != "no" -a "$withval" != "yes"; then
aticonfig_exe=$withval
else
diff --git a/plugins/udisks/udisks-plugin.c b/plugins/udisks/udisks-plugin.c
index 4995f08..77d066f 100644
--- a/plugins/udisks/udisks-plugin.c
+++ b/plugins/udisks/udisks-plugin.c
@@ -1,4 +1,5 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ * vim: sts=0 sw=8 ts=8 tw=78 noexpandtab
*
* Copyright (C) 2009 Pramod Dematagoda <[email protected]>
*
@@ -39,6 +40,7 @@
*/
typedef struct _DevInfo{
gchar *path;
+ gchar *id;
gboolean changed;
gdouble temp;
DBusGProxy *sensor_proxy;
@@ -115,7 +117,7 @@ static void udisks_plugin_get_sensors(GList **sensors) {
/* This proxy is used to get the required data in order to build
* up the list of sensors
*/
- GValue model = {0, }, id = {0, }, smart_available = {0, };
+ GValue smart_available = G_VALUE_INIT;
gchar *path = (gchar *)g_ptr_array_index(paths, i);
sensor_proxy = dbus_g_proxy_new_for_name(connection,
@@ -130,27 +132,37 @@ static void udisks_plugin_get_sensors(GList **sensors) {
"DriveAtaSmartIsAvailable",
G_TYPE_INVALID,
G_TYPE_VALUE, &smart_available, G_TYPE_INVALID)) {
- gchar *id_str, *model_str;
if (!g_value_get_boolean(&smart_available)) {
- g_debug("Drive at path '%s' does not support Smart monitoring... ignoring",
+ g_debug("Drive at path '%s' does not support "
+ "Smart monitoring... ignoring",
path);
g_object_unref(sensor_proxy);
g_free (path);
continue;
}
+ GValue model_v = G_VALUE_INIT;
dbus_g_proxy_call(sensor_proxy, "Get", NULL,
G_TYPE_STRING, UDISKS_BUS_NAME,
G_TYPE_STRING, "DriveModel",
G_TYPE_INVALID,
- G_TYPE_VALUE, &model,
+ G_TYPE_VALUE, &model_v,
G_TYPE_INVALID);
+ GValue dev_v = G_VALUE_INIT;
dbus_g_proxy_call(sensor_proxy, "Get", NULL,
G_TYPE_STRING, UDISKS_BUS_NAME,
G_TYPE_STRING, "DeviceFile",
G_TYPE_INVALID,
- G_TYPE_VALUE, &id,
+ G_TYPE_VALUE, &dev_v,
+ G_TYPE_INVALID);
+
+ GValue ids_v = G_VALUE_INIT;
+ dbus_g_proxy_call(sensor_proxy, "Get", NULL,
+ G_TYPE_STRING, UDISKS_BUS_NAME,
+ G_TYPE_STRING, "DeviceFileById",
+ G_TYPE_INVALID,
+ G_TYPE_VALUE, &ids_v,
G_TYPE_INVALID);
g_object_unref(sensor_proxy);
@@ -170,38 +182,46 @@ static void udisks_plugin_get_sensors(GList **sensors) {
G_CALLBACK(udisks_changed_signal_cb),
path, NULL);
+
+ gchar *model = g_value_get_string(&model_v);
+ gchar *dev = g_value_get_string(&dev_v);
+ GStrv ids = g_value_get_boxed(&ids_v);
+
+ gchar *id = ids != NULL && ids[0] != NULL ? ids[0] : dev;
+
info = g_malloc(sizeof(DevInfo));
if (devices == NULL)
{
devices = g_hash_table_new(g_str_hash,
g_str_equal);
}
+ info->id = g_strdup(id);
info->path = g_strdup(path);
info->sensor_proxy = sensor_proxy;
/* Set the device status changed as TRUE because we need
* to get the initial temperature reading
*/
info->changed = TRUE;
- g_hash_table_insert(devices, info->path, info);
+ g_hash_table_insert(devices, info->id, info);
/* Write the sensor data */
- id_str = g_value_get_string(&id);
- model_str = g_value_get_string(&model);
sensors_applet_plugin_add_sensor(sensors,
- path,
- id_str,
- model_str,
+ id,
+ "Disk Temperature",
+ model,
TEMP_SENSOR,
FALSE,
HDD_ICON,
DEFAULT_GRAPH_COLOR);
- g_free(id_str);
- g_free(model_str);
+ g_strfreev(ids);
+ g_free(model);
+ g_free(dev);
+ g_debug("Added %s %s", path, id);
} else {
g_debug ("Cannot obtain data for device: %s\n"
- "Error: %s\n",
- path,
- error->message);
+ "Error: %s\n",
+ path,
+ error->message);
g_error_free (error);
error = NULL;
g_object_unref(sensor_proxy);
@@ -243,7 +263,7 @@ static gdouble udisks_plugin_get_sensor_value(const gchar *path,
GValue smart_time = { 0, };
sensor_proxy = dbus_g_proxy_new_for_name(connection,
UDISKS_BUS_NAME,
- path,
+ info->path,
UDISKS_PROPERTIES_INTERFACE);
if (!dbus_g_proxy_call(sensor_proxy, "Get", error,
G_TYPE_STRING, UDISKS_BUS_NAME,