--- totem-2.18.1/browser-plugin/totem-plugin-viewer.c.remove-libsn 2007-05-29 16:53:17.000000000 -0400
+++ totem-2.18.1/browser-plugin/totem-plugin-viewer.c 2007-05-29 16:55:43.000000000 -0400
@@ -34,8 +34,6 @@
#include <glade/glade.h>
#include <gconf/gconf-client.h>
-#define SN_API_NOT_YET_FROZEN
-#include <libsn/sn.h>
#include <gdk/gdk.h>
#include <gdk/gdkx.h>
@@ -583,54 +581,6 @@
}
-static void
-sn_error_trap_push (SnDisplay *display,
- Display *xdisplay)
-{
- gdk_error_trap_push ();
-}
-
-static void
-sn_error_trap_pop (SnDisplay *display,
- Display *xdisplay)
-{
- gdk_error_trap_pop ();
-}
-
-static char **
-make_spawn_environment_for_sn_context (SnLauncherContext *sn_context,
- char **envp)
-{
- char **retval;
- int i, j;
-
- retval = NULL;
-
- if (envp == NULL) {
- envp = environ;
- }
-
- for (i = 0; envp[i]; i++) {
- /* Count length */
- }
-
- retval = g_new (char *, i + 2);
-
- for (i = 0, j = 0; envp[i]; i++) {
- if (!g_str_has_prefix (envp[i], "DESKTOP_STARTUP_ID=")) {
- retval[j] = g_strdup (envp[i]);
- ++j;
- }
- }
-
- retval[j] = g_strdup_printf ("DESKTOP_STARTUP_ID=%s",
- sn_launcher_context_get_startup_id (sn_context));
- ++j;
- retval[j] = NULL;
-
- return retval;
-}
-
/* This should be fairly long, as it's confusing to users if a startup
* ends when it shouldn't (it appears that the startup failed, and
* they have to relaunch the app). Also the timeout only matters when
@@ -651,109 +601,6 @@
guint timeout_id;
} StartupTimeoutData;
-static void
-free_startup_timeout (void *data)
-{
- StartupTimeoutData *std;
-
- std = data;
-
- g_slist_foreach (std->contexts,
- (GFunc) sn_launcher_context_unref,
- NULL);
- g_slist_free (std->contexts);
-
- if (std->timeout_id != 0) {
- g_source_remove (std->timeout_id);
- std->timeout_id = 0;
- }
-
- g_free (std);
-}
-
-static gboolean
-startup_timeout (void *data)
-{
- StartupTimeoutData *std;
- GSList *tmp;
- GTimeVal now;
- int min_timeout;
-
- std = data;
-
- min_timeout = STARTUP_TIMEOUT_LENGTH;
-
- g_get_current_time (&now);
-
- tmp = std->contexts;
- while (tmp != NULL) {
- SnLauncherContext *sn_context;
- GSList *next;
- long tv_sec, tv_usec;
- double elapsed;
-
- sn_context = tmp->data;
- next = tmp->next;
-
- sn_launcher_context_get_last_active_time (sn_context,
- &tv_sec, &tv_usec);
-
- elapsed =
- ((((double)now.tv_sec - tv_sec) * G_USEC_PER_SEC +
- (now.tv_usec - tv_usec))) / 1000.0;
-
- if (elapsed >= STARTUP_TIMEOUT_LENGTH) {
- std->contexts = g_slist_remove (std->contexts,
- sn_context);
- sn_launcher_context_complete (sn_context);
- sn_launcher_context_unref (sn_context);
- } else {
- min_timeout = MIN (min_timeout, (STARTUP_TIMEOUT_LENGTH - elapsed));
- }
-
- tmp = next;
- }
-
- if (std->contexts == NULL) {
- std->timeout_id = 0;
- } else {
- std->timeout_id = g_timeout_add (min_timeout,
- startup_timeout,
- std);
- }
-
- /* always remove this one, but we may have reinstalled another one. */
- return FALSE;
-}
-
-static void
-add_startup_timeout (GdkScreen *screen,
- SnLauncherContext *sn_context)
-{
- StartupTimeoutData *data;
-
- data = g_object_get_data (G_OBJECT (screen), "nautilus-startup-data");
- if (data == NULL) {
- data = g_new (StartupTimeoutData, 1);
- data->screen = screen;
- data->contexts = NULL;
- data->timeout_id = 0;
-
- g_object_set_data_full (G_OBJECT (screen),
- "nautilus-startup-data",
- data, free_startup_timeout);
- }
-
- sn_launcher_context_ref (sn_context);
- data->contexts = g_slist_prepend (data->contexts, sn_context);
-
- if (data->timeout_id == 0) {
- data->timeout_id = g_timeout_add (STARTUP_TIMEOUT_LENGTH,
- startup_timeout,
- data);
- }
-}
-
static gboolean
totem_embedded_launch_player (TotemEmbedded *embedded,
const char *uri,
@@ -763,8 +610,6 @@
GList *uris = NULL;
GdkScreen *screen;
GnomeVFSResult result;
- SnLauncherContext *sn_context;
- SnDisplay *sn_display;
char **envp;
g_return_val_if_fail (embedded->app != NULL, FALSE);
@@ -784,67 +629,10 @@
g_return_val_if_fail (screen != NULL, FALSE);
envp = my_gdk_spawn_make_environment_for_screen (screen, NULL);
- sn_display = sn_display_new (gdk_display,
- sn_error_trap_push,
- sn_error_trap_pop);
-
- if (gnome_vfs_mime_application_supports_startup_notification (embedded->app)) {
- char *name;
-
- sn_context = sn_launcher_context_new (sn_display,
- gdk_screen_get_number (screen));
-
- name = g_filename_display_basename (uri);
- if (name != NULL) {
- char *description;
-
- sn_launcher_context_set_name (sn_context, name);
- description = g_strdup_printf (_("Opening %s"), name);
- sn_launcher_context_set_description (sn_context,
- description);
- g_free (name);
- g_free (description);
- }
- if (!sn_launcher_context_get_initiated (sn_context)) {
- const char *binary_name;
- char **old_envp;
-
- binary_name = gnome_vfs_mime_application_get_binary_name
- (embedded->app);
-
- sn_launcher_context_set_binary_name (sn_context,
- binary_name);
-
- sn_launcher_context_initiate (sn_context,
- g_get_prgname (),
- binary_name,
- (Time) user_time);
-
- old_envp = envp;
- envp = make_spawn_environment_for_sn_context
- (sn_context, envp);
- g_strfreev (old_envp);
- }
- } else {
- sn_context = NULL;
- }
-
result = gnome_vfs_mime_application_launch_with_env (embedded->app,
uris, envp);
- if (sn_context != NULL) {
- if (result != GNOME_VFS_OK) {
- /* end sequence */
- sn_launcher_context_complete (sn_context);
- } else {
- add_startup_timeout (screen, sn_context);
- }
- sn_launcher_context_unref (sn_context);
- }
-
- sn_display_unref (sn_display);
-
g_list_free (uris);
g_strfreev (envp);