Esempio n. 1
0
static gboolean
startup_notification_timeout (gpointer data)
{
  StartupNotificationData *sn_data = data;

  end_startup_notification (sn_data->display, sn_data->startup_id);
  g_object_unref (sn_data->display);
  g_free (sn_data->startup_id);
  g_free (sn_data);

  return FALSE;
}
Esempio n. 2
0
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)
    {
      StartupNotificationData *sn_data;
      GSList *next;
      double elapsed;

      sn_data = tmp->data;
      next = tmp->next;

      elapsed =
        ((((double) now.tv_sec - sn_data->time.tv_sec) * G_USEC_PER_SEC +
          (now.tv_usec - sn_data->time.tv_usec))) / 1000.0;

      if (elapsed >= STARTUP_TIMEOUT_LENGTH)
        {
          std->contexts = g_slist_remove (std->contexts, sn_data);
          end_startup_notification (sn_data->display, sn_data->startup_id);
          free_startup_notification_data (sn_data);
        }
      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_seconds ((min_timeout + 500)/1000, startup_timeout, std);
    g_source_set_name_by_id (std->timeout_id, "[gtk+] startup_timeout");
  }

  /* always remove this one, but we may have reinstalled another one. */
  return G_SOURCE_REMOVE;
}
void
mpl_gdk_windowing_launch_failed (GAppLaunchContext *context, 
                                 const char        *startup_notify_id)
{
#if 0
  GdkAppLaunchContextPrivate *priv;
#endif
  GdkScreen *screen;
  StartupTimeoutData *data;
  StartupNotificationData *sn_data;
  GSList *l;

#if 0
  priv = GDK_APP_LAUNCH_CONTEXT (context)->priv;

  if (priv->screen)
    screen = priv->screen;
  else if (priv->display)
    screen = gdk_display_get_default_screen (priv->display);
  else
#endif
    screen = gdk_display_get_default_screen (gdk_display_get_default ());

  data = g_object_get_data (G_OBJECT (screen), "appinfo-startup-data");

  if (data)
    {
      for (l = data->contexts; l != NULL; l = l->next)
	{
	  sn_data = l->data;
	  if (strcmp (startup_notify_id, sn_data->startup_id) == 0)
	    {
	      data->contexts = g_slist_remove (data->contexts, sn_data);
	      end_startup_notification (sn_data->display, sn_data->startup_id);
	      free_startup_notification_data (sn_data);
					      
	      break;
	    }
	}

      if (data->contexts == NULL)
	{
	  g_source_remove (data->timeout_id);
	  data->timeout_id = 0;
	}
    }
}
Esempio n. 4
0
static void
gdk_x11_app_launch_context_launch_failed (GAppLaunchContext *context,
                                          const gchar       *startup_notify_id)
{
  GdkAppLaunchContext *ctx;
  GdkX11Screen *screen;
  StartupTimeoutData *data;
  StartupNotificationData *sn_data;
  GSList *l;

  ctx = GDK_APP_LAUNCH_CONTEXT (context);

  screen = GDK_X11_DISPLAY (ctx->display)->screen;

  data = g_object_get_data (G_OBJECT (screen), "appinfo-startup-data");

  if (data)
    {
      for (l = data->contexts; l != NULL; l = l->next)
        {
          sn_data = l->data;
          if (strcmp (startup_notify_id, sn_data->startup_id) == 0)
            {
              data->contexts = g_slist_remove (data->contexts, sn_data);
              end_startup_notification (sn_data->display, sn_data->startup_id);
              free_startup_notification_data (sn_data);

              break;
            }
        }

      if (data->contexts == NULL)
        {
          g_source_remove (data->timeout_id);
          data->timeout_id = 0;
        }
    }
}