]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkselection.c
Use g_unlink. (#421990, Morten Welinder)
[~andy/gtk] / gtk / gtkselection.c
index 451e5d860ee91753c2adde0f8f507a8e8e7a02d0..b76090be200499f7ef0b1e96d4157ee2b7d7d56a 100644 (file)
@@ -152,8 +152,8 @@ struct _GtkRetrievalInfo
 
 /* Local Functions */
 static void gtk_selection_init              (void);
-static gint gtk_selection_incr_timeout      (GtkIncrInfo      *info);
-static gint gtk_selection_retrieval_timeout (GtkRetrievalInfo *info);
+static gboolean gtk_selection_incr_timeout      (GtkIncrInfo      *info);
+static gboolean gtk_selection_retrieval_timeout (GtkRetrievalInfo *info);
 static void gtk_selection_retrieval_report  (GtkRetrievalInfo *info,
                                             GdkAtom           type,
                                             gint              format,
@@ -1090,7 +1090,8 @@ gtk_selection_convert (GtkWidget *widget,
   
   current_retrievals = g_list_append (current_retrievals, info);
   gdk_selection_convert (widget->window, selection, target, time_);
-  g_timeout_add (1000, (GSourceFunc) gtk_selection_retrieval_timeout, info);
+  gdk_threads_add_timeout (1000,
+      (GSourceFunc) gtk_selection_retrieval_timeout, info);
   
   return TRUE;
 }
@@ -1115,8 +1116,7 @@ gtk_selection_data_set (GtkSelectionData *selection_data,
                        const guchar     *data,
                        gint              length)
 {
-  if (selection_data->data)
-    g_free (selection_data->data);
+  g_free (selection_data->data);
   
   selection_data->type = type;
   selection_data->format = format;
@@ -1310,7 +1310,7 @@ selection_get_text_plain (GtkSelectionData *selection_data)
     {
       gchar *tmp = str;
       str = g_convert_with_fallback (tmp, len, 
-                                    charset, "UTF-8", 
+                                    "UTF-8", charset,
                                     NULL, NULL, &len, &error);
       g_free (tmp);
 
@@ -2131,6 +2131,7 @@ _gtk_selection_request (GtkWidget *widget,
                                                 event->time);
          g_free (mult_atoms);
          g_free (info);
+          gdk_error_trap_pop ();
          return TRUE;
        }
       gdk_error_trap_pop ();
@@ -2167,6 +2168,8 @@ _gtk_selection_request (GtkWidget *widget,
              info->conversions[i].target = ((GdkAtom *)mult_atoms)[2*i];
              info->conversions[i].property = ((GdkAtom *)mult_atoms)[2*i+1];
            }
+
+         g_free (mult_atoms);
        }
     }
   else                         /* only a single conversion */
@@ -2260,7 +2263,7 @@ _gtk_selection_request (GtkWidget *widget,
                             gdk_window_get_events (info->requestor) |
                             GDK_PROPERTY_CHANGE_MASK);
       current_incrs = g_list_append (current_incrs, info);
-      g_timeout_add (1000, (GSourceFunc) gtk_selection_incr_timeout, info);
+      gdk_threads_add_timeout (1000, (GSourceFunc) gtk_selection_incr_timeout, info);
     }
   
   /* If it was a MULTIPLE request, set the property to indicate which
@@ -2449,8 +2452,6 @@ gtk_selection_incr_timeout (GtkIncrInfo *info)
   GList *tmp_list;
   gboolean retval;
 
-  GDK_THREADS_ENTER ();
-  
   /* Determine if retrieval has finished by checking if it still in
      list of pending retrievals */
   
@@ -2486,8 +2487,6 @@ gtk_selection_incr_timeout (GtkIncrInfo *info)
       retval = TRUE;           /* timeout will happen again */
     }
   
-  GDK_THREADS_LEAVE ();
-
   return retval;
 }
 
@@ -2693,14 +2692,12 @@ _gtk_selection_property_notify (GtkWidget       *widget,
  *   results:
  *************************************************************/
 
-static gint
+static gboolean
 gtk_selection_retrieval_timeout (GtkRetrievalInfo *info)
 {
   GList *tmp_list;
   gboolean retval;
 
-  GDK_THREADS_ENTER ();
-  
   /* Determine if retrieval has finished by checking if it still in
      list of pending retrievals */
   
@@ -2734,8 +2731,6 @@ gtk_selection_retrieval_timeout (GtkRetrievalInfo *info)
       retval =  TRUE;          /* timeout will happen again */
     }
 
-  GDK_THREADS_LEAVE ();
-
   return retval;
 }
 
@@ -2937,8 +2932,7 @@ gtk_selection_data_free (GtkSelectionData *data)
 {
   g_return_if_fail (data != NULL);
   
-  if (data->data)
-    g_free (data->data);
+  g_free (data->data);
   
   g_free (data);
 }