summaryrefslogtreecommitdiffstats
path: root/gtk
diff options
context:
space:
mode:
authorjstebbins <[email protected]>2010-04-27 18:24:12 +0000
committerjstebbins <[email protected]>2010-04-27 18:24:12 +0000
commit8e7e8e21ff68e9972b79cac98e95d6abe483ec48 (patch)
tree6c180666dc2fdee056f287708327461e93b6dec3 /gtk
parent2324f99d7e145625623e31be70dea6d705bed80a (diff)
LinGui: drop dependency on hal, use udev instead
this means support for older linux versions is being dropped. ubuntu 9.10 and above and fedora 12 and above are known to work. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3270 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'gtk')
-rw-r--r--gtk/configure.ac2
-rw-r--r--gtk/src/callbacks.c110
-rw-r--r--gtk/src/callbacks.h2
-rw-r--r--gtk/src/hb-backend.c1
-rw-r--r--gtk/src/main.c4
-rw-r--r--gtk/src/queuehandler.c2
6 files changed, 37 insertions, 84 deletions
diff --git a/gtk/configure.ac b/gtk/configure.ac
index 0a1b2517d..0323214f2 100644
--- a/gtk/configure.ac
+++ b/gtk/configure.ac
@@ -76,7 +76,7 @@ case $host in
mingw_flag=yes
;;
*)
- GHB_PACKAGES="gtk+-2.0 >= 2.10 gthread-2.0 gstreamer-0.10 gstreamer-interfaces-0.10 gstreamer-video-0.10 gstreamer-pbutils-0.10 gio-2.0 hal hal-storage libnotify"
+ GHB_PACKAGES="gtk+-2.0 >= 2.10 gthread-2.0 gstreamer-0.10 gstreamer-interfaces-0.10 gstreamer-video-0.10 gstreamer-pbutils-0.10 gio-2.0 libnotify gudev-1.0"
mingw_flag=no
;;
esac
diff --git a/gtk/src/callbacks.c b/gtk/src/callbacks.c
index 9f89ba9d8..682b90cf6 100644
--- a/gtk/src/callbacks.c
+++ b/gtk/src/callbacks.c
@@ -22,7 +22,8 @@
#if !defined(_WIN32)
#include <poll.h>
-#include <libhal-storage.h>
+#define G_UDEV_API_IS_SUBJECT_TO_CHANGE 1
+#include <gudev/gudev.h>
#include <dbus/dbus-glib.h>
#include <dbus/dbus-glib-lowlevel.h>
@@ -3785,7 +3786,7 @@ dvd_device_list()
}
#if !defined(_WIN32)
-static LibHalContext *hal_ctx = NULL;
+static GUdevClient *udev_ctx = NULL;
#endif
gboolean
@@ -3793,27 +3794,43 @@ ghb_is_cd(GDrive *gd)
{
#if !defined(_WIN32)
gchar *device;
- LibHalDrive *halDrive;
- LibHalDriveType dtype;
+ GUdevDevice *udd;
- if (hal_ctx == NULL)
+ if (udev_ctx == NULL)
return FALSE;
device = g_drive_get_identifier(gd, G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE);
if (device == NULL)
return FALSE;
- halDrive = libhal_drive_from_device_file (hal_ctx, device);
+
+ udd = g_udev_client_query_by_device_file(udev_ctx, device);
g_free(device);
- if (halDrive == NULL)
+
+ if (udd == NULL)
+ {
+ g_message("udev: Failed to lookup device %s", device);
return FALSE;
- dtype = libhal_drive_get_type(halDrive);
- libhal_drive_free(halDrive);
- return (dtype == LIBHAL_DRIVE_TYPE_CDROM);
+ }
+
+ gint val;
+ val = g_udev_device_get_property_as_int(udd, "ID_CDROM_DVD");
+ if (val == 1)
+ return TRUE;
+
+ return FALSE;
#else
return FALSE;
#endif
}
+void
+ghb_udev_init()
+{
+#if !defined(_WIN32)
+ udev_ctx = g_udev_client_new(NULL);
+#endif
+}
+
#if defined(_WIN32)
static void
handle_media_change(const gchar *device, gboolean insert, signal_user_data_t *ud)
@@ -3962,12 +3979,6 @@ drive_changed_cb(GVolumeMonitor *gvm, GDrive *gd, signal_user_data_t *ud)
#endif
#if !defined(_WIN32)
-static void
-dbus_init (void)
-{
- dbus_g_thread_init();
-}
-
#define GPM_DBUS_PM_SERVICE "org.freedesktop.PowerManagement"
#define GPM_DBUS_PM_PATH "/org/freedesktop/PowerManagement"
#define GPM_DBUS_PM_INTERFACE "org.freedesktop.PowerManagement"
@@ -4070,11 +4081,11 @@ ghb_suspend_gpm()
#endif
}
+#if !defined(_WIN32)
static gboolean
ghb_can_shutdown_gpm()
{
gboolean can_shutdown = FALSE;
-#if !defined(_WIN32)
DBusGConnection *conn;
DBusGProxy *proxy;
GError *error = NULL;
@@ -4115,14 +4126,14 @@ ghb_can_shutdown_gpm()
}
g_object_unref(G_OBJECT(proxy));
dbus_g_connection_unref(conn);
-#endif
return can_shutdown;
}
+#endif
+#if !defined(_WIN32)
static void
ghb_shutdown_gpm()
{
-#if !defined(_WIN32)
DBusGConnection *conn;
DBusGProxy *proxy;
GError *error = NULL;
@@ -4160,8 +4171,8 @@ ghb_shutdown_gpm()
}
g_object_unref(G_OBJECT(proxy));
dbus_g_connection_unref(conn);
-#endif
}
+#endif
void
ghb_inhibit_gpm()
@@ -4480,65 +4491,6 @@ ghb_uninhibit_gsm()
#endif
}
-void
-ghb_hal_init()
-{
-#if !defined(_WIN32)
- DBusGConnection *gconn;
- DBusConnection *conn;
- GError *gerror = NULL;
- DBusError error;
- char **devices;
- int nr;
-
- dbus_init ();
-
- if (!(hal_ctx = libhal_ctx_new ())) {
- g_warning ("failed to create a HAL context!");
- return;
- }
-
- gconn = dbus_g_bus_get(DBUS_BUS_SYSTEM, &gerror);
- if (gerror != NULL)
- {
- g_warning("DBUS cannot connect: %s", gerror->message);
- g_error_free(gerror);
- return;
- }
- conn = dbus_g_connection_get_connection(gconn);
- libhal_ctx_set_dbus_connection (hal_ctx, conn);
- dbus_error_init (&error);
- if (!libhal_ctx_init (hal_ctx, &error)) {
- g_warning ("libhal_ctx_init failed: %s", error.message ? error.message : "unknown");
- dbus_error_free (&error);
- libhal_ctx_free (hal_ctx);
- dbus_g_connection_unref(gconn);
- hal_ctx = NULL;
- return;
- }
-
- /*
- * Do something to ping the HAL daemon - the above functions will
- * succeed even if hald is not running, so long as DBUS is. But we
- * want to exit silently if hald is not running, to behave on
- * pre-2.6 systems.
- */
- if (!(devices = libhal_get_all_devices (hal_ctx, &nr, &error))) {
- g_warning ("seems that HAL is not running: %s", error.message ? error.message : "unknown");
- dbus_error_free (&error);
-
- libhal_ctx_shutdown (hal_ctx, NULL);
- libhal_ctx_free (hal_ctx);
- hal_ctx = NULL;
- dbus_g_connection_unref(gconn);
- return;
- }
-
- libhal_free_string_array (devices);
- dbus_g_connection_unref(gconn);
-#endif
-}
-
G_MODULE_EXPORT gboolean
tweak_setting_cb(
GtkWidget *widget,
diff --git a/gtk/src/callbacks.h b/gtk/src/callbacks.h
index a124ab59f..f873c871f 100644
--- a/gtk/src/callbacks.h
+++ b/gtk/src/callbacks.h
@@ -41,7 +41,7 @@ void debug_log_handler(
const gchar *domain, GLogLevelFlags flags, const gchar *msg, gpointer ud);
void ghb_hbfd(signal_user_data_t *ud, gboolean hbfd);
gboolean ghb_file_menu_add_dvd(signal_user_data_t *ud);
-void ghb_hal_init(void);
+void ghb_udev_init(void);
gboolean ghb_message_dialog(
GtkMessageType type, const gchar *message,
const gchar *no, const gchar *yes);
diff --git a/gtk/src/hb-backend.c b/gtk/src/hb-backend.c
index 55f9747c9..97f7d8df1 100644
--- a/gtk/src/hb-backend.c
+++ b/gtk/src/hb-backend.c
@@ -2017,7 +2017,6 @@ ghb_longest_title()
hb_title_t * title;
gint ii;
gint count = 0;
- guint64 longest = 0;
gint titleindex = 0;
gint feature;
diff --git a/gtk/src/main.c b/gtk/src/main.c
index 3782efe95..20e9f8518 100644
--- a/gtk/src/main.c
+++ b/gtk/src/main.c
@@ -37,6 +37,7 @@
#if !defined(_WIN32)
#include <gst/gst.h>
#include <libnotify/notify.h>
+#include <dbus/dbus-glib.h>
#else
#include <windows.h>
#include <io.h>
@@ -800,8 +801,9 @@ main (int argc, char *argv[])
ghb_load_icons();
#if !defined(_WIN32)
- ghb_hal_init();
+ dbus_g_thread_init();
#endif
+ ghb_udev_init();
ghb_write_pid_file();
ud = g_malloc0(sizeof(signal_user_data_t));
diff --git a/gtk/src/queuehandler.c b/gtk/src/queuehandler.c
index 3b91a2464..7be812b70 100644
--- a/gtk/src/queuehandler.c
+++ b/gtk/src/queuehandler.c
@@ -94,7 +94,7 @@ add_to_queue_list(signal_user_data_t *ud, GValue *settings, GtkTreeIter *piter)
vqtype = ghb_settings_get_boolean(settings, "vquality_type_constant");
if (!vqtype)
pass2 = ghb_settings_get_boolean(settings, "VideoTwoPass");
- const gchar *points;
+ const gchar *points = "Chapters";
if (ghb_settings_combo_int(settings, "PtoPType") == 0)
points = "Chapters";
else if (ghb_settings_combo_int(settings, "PtoPType") == 1)