diff options
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | src/beaver-target.c | 35 | ||||
-rw-r--r-- | src/beaver-target.h | 4 |
3 files changed, 46 insertions, 4 deletions
@@ -1,5 +1,16 @@ 2008-04-03 Rob Bradford <rob@openedhand.com> + * src/beaver-target.c: (beaver_target_class_init), + (beaver_target_run_remote), (_beaver_target_run_remote), + (launcher_child_exited_cb): + * src/beaver-target.h: + Add a beaver_target_run_remote function that uses the correct + environment to programs on the device *without* needing an extra + script. + Fix the logic in the launcher_child_exited_cb. + +2008-04-03 Rob Bradford <rob@openedhand.com> + * src/beaver-target-device.c: (beaver_target_device_set_state): Emit signal on state change. diff --git a/src/beaver-target.c b/src/beaver-target.c index 696266d..ac4a3ec 100644 --- a/src/beaver-target.c +++ b/src/beaver-target.c @@ -61,8 +61,10 @@ static void launcher_child_exited_cb (AnjutaLauncher *launcher, gint child_pid, gint status, gulong time, gpointer userdata); static void launcher_data_cb (AnjutaLauncher *launcher, AnjutaLauncherOutputType type, const gchar *chars, gpointer userdata); -gboolean _beaver_target_run_remote_v (BeaverTarget *target, gchar **in_args, +static gboolean _beaver_target_run_remote_v (BeaverTarget *target, gchar **in_args, GError **error); +static gboolean _beaver_target_run_remote (BeaverTarget *target, gchar *cmd, + GError **out_err); static void beaver_target_get_property (GObject *object, guint property_id, @@ -129,6 +131,7 @@ beaver_target_class_init (BeaverTargetClass *klass) object_class->finalize = beaver_target_finalize; klass->run_remote_v = _beaver_target_run_remote_v; + klass->run_remote = _beaver_target_run_remote; signals[STATE_CHANGED] = g_signal_new ("state-changed", G_OBJECT_CLASS_TYPE (object_class), @@ -195,8 +198,33 @@ beaver_target_run_remote_v (BeaverTarget *target, gchar **in_args, return BEAVER_TARGET_GET_CLASS (target)->run_remote_v (target, in_args, error); } -/* default implementations */ gboolean +beaver_target_run_remote (BeaverTarget *target, gchar *cmd, GError **error) +{ + return BEAVER_TARGET_GET_CLASS (target)->run_remote (target, cmd, error); +} + +/* default implementations */ +static gboolean +_beaver_target_run_remote (BeaverTarget *target, gchar *cmd, GError **out_err) +{ + GError *error = NULL; + gchar *args[2] = { 0 }; + gchar *cmdline = NULL; + gboolean res = FALSE; + + cmdline = g_strdup_printf ("DISPLAY=:0 dbus-launch %s", cmd); + args[0] = cmdline; + args[1] = NULL; + + res = beaver_target_run_remote_v (target, args, &error); + + g_free (cmdline); + + return res; +} + +static gboolean _beaver_target_run_remote_v (BeaverTarget *target, gchar **in_args, GError **out_err) { @@ -268,8 +296,7 @@ launcher_child_exited_cb (AnjutaLauncher *launcher, gint child_pid, { BeaverTarget *target = BEAVER_TARGET (userdata); - if (beaver_target_get_state (target) == TARGET_STATE_READY) - beaver_target_set_state (target, TARGET_STATE_READY); + beaver_target_set_state (target, TARGET_STATE_READY); } static void diff --git a/src/beaver-target.h b/src/beaver-target.h index fbc57c2..0b3bf7f 100644 --- a/src/beaver-target.h +++ b/src/beaver-target.h @@ -73,6 +73,8 @@ typedef struct { gboolean (* run_remote_v) (BeaverTarget *target, gchar **args_in, GError **error); + gboolean (* run_remote) (BeaverTarget *target, gchar *cmd, + GError **error); } BeaverTargetClass; GType beaver_target_get_type (void); @@ -83,6 +85,8 @@ const gchar *beaver_target_get_ip_address (BeaverTarget *target); IAnjutaMessageManager *beaver_target_get_message_manager (BeaverTarget *target); gboolean beaver_target_run_remote_v (BeaverTarget *target, gchar **in_args, GError **error); +gboolean beaver_target_run_remote (BeaverTarget *target, gchar *cmd, + GError **error); G_END_DECLS |