[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
feature/pgtk bb6862d 089/100: Fix crash on drag and drop
From: |
Yuuki Harano |
Subject: |
feature/pgtk bb6862d 089/100: Fix crash on drag and drop |
Date: |
Tue, 24 Nov 2020 08:02:44 -0500 (EST) |
branch: feature/pgtk
commit bb6862df1beddeaa4802af58b94332ba48afbb4f
Author: Yuuki Harano <masm+github@masm11.me>
Commit: Jeff Walsh <jeff.walsh@drtusers-MacBook-Pro.local>
Fix crash on drag and drop
* src/pgtkterm.c (pgtk_select): Move dispatch before
g_main_context_query.
(drag_drop): Remove drag_drop.
(drag_data_received): Rename arg.
(pgtk_set_event_handler): Remove drag-drop callback.
---
src/pgtkterm.c | 51 ++++++++++++++++-----------------------------------
1 file changed, 16 insertions(+), 35 deletions(-)
diff --git a/src/pgtkterm.c b/src/pgtkterm.c
index a5cf0a8..c66379e 100644
--- a/src/pgtkterm.c
+++ b/src/pgtkterm.c
@@ -3841,6 +3841,20 @@ pgtk_select (int fds_lim, fd_set * rfds, fd_set * wfds,
fd_set * efds,
Note that, as implemented, this failure is completely silent: there is
no feedback to the caller. */
+ /* Before sleep, dispatch draw events.
+ * Don't do this after g_main_context_query(), because fd may be closed
+ * in dispatch.
+ */
+ if (context_acquired)
+ {
+ int pselect_errno = errno;
+ block_input ();
+ while (g_main_context_pending (context))
+ g_main_context_dispatch (context);
+ unblock_input ();
+ errno = pselect_errno;
+ }
+
if (rfds)
all_rfds = *rfds;
else
@@ -3895,17 +3909,6 @@ pgtk_select (int fds_lim, fd_set * rfds, fd_set * wfds,
fd_set * efds,
tmop = &tmo;
}
- /* Before sleep, dispatch draw events. */
- if (context_acquired)
- {
- int pselect_errno = errno;
- block_input ();
- while (g_main_context_pending (context))
- g_main_context_dispatch (context);
- unblock_input ();
- errno = pselect_errno;
- }
-
fds_lim = max_fds + 1;
nfds = thread_select (pselect, fds_lim,
&all_rfds, have_wfds ? &all_wfds : NULL, efds,
@@ -6509,31 +6512,11 @@ scroll_event (GtkWidget * widget, GdkEvent * event,
gpointer * user_data)
return TRUE;
}
-static gboolean
-drag_drop (GtkWidget * widget,
- GdkDragContext * context,
- gint x, gint y, guint time_, gpointer user_data)
-{
- PGTK_TRACE ("drag_drop");
- GdkAtom target = gtk_drag_dest_find_target (widget, context, NULL);
- PGTK_TRACE ("drag_drop: target: %p", (void *) target);
-
- if (target == GDK_NONE)
- {
- gtk_drag_finish (context, TRUE, FALSE, time_);
- return FALSE;
- }
-
- gtk_drag_get_data (widget, context, target, time_);
-
- return TRUE;
-}
-
static void
drag_data_received (GtkWidget * widget, GdkDragContext * context,
gint x, gint y,
GtkSelectionData * data,
- guint info, guint time_, gpointer user_data)
+ guint info, guint time, gpointer user_data)
{
PGTK_TRACE ("drag_data_received:");
struct frame *f = pgtk_any_window_to_frame (gtk_widget_get_window (widget));
@@ -6567,7 +6550,7 @@ drag_data_received (GtkWidget * widget, GdkDragContext *
context,
}
PGTK_TRACE ("drag_data_received: that's all.");
- gtk_drag_finish (context, TRUE, FALSE, time_);
+ gtk_drag_finish (context, TRUE, FALSE, time);
}
void
@@ -6622,8 +6605,6 @@ pgtk_set_event_handler (struct frame *f)
G_CALLBACK (pgtk_selection_lost), NULL);
g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "configure-event",
G_CALLBACK (configure_event), NULL);
- g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "drag-drop",
- G_CALLBACK (drag_drop), NULL);
g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "drag-data-received",
G_CALLBACK (drag_data_received), NULL);
g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "draw",
- feature/pgtk 0b69b73 085/100: Fix crash when child frame updates toolbar, (continued)
- feature/pgtk 0b69b73 085/100: Fix crash when child frame updates toolbar, Yuuki Harano, 2020/11/24
- feature/pgtk 1d549fa 015/100: Add support for make-frame-(in)visible, Yuuki Harano, 2020/11/24
- feature/pgtk 19da22e 018/100: Add support for handing the internal border, Yuuki Harano, 2020/11/24
- feature/pgtk e021e23 043/100: End Resize flickering by copying surface rather than just clearing, Yuuki Harano, 2020/11/24
- feature/pgtk fd61a86 030/100: improve some efficiency - simplify draws, Yuuki Harano, 2020/11/24
- feature/pgtk 330a346 012/100: Migrate to Emacs_GC, Yuuki Harano, 2020/11/24
- feature/pgtk b1cc62c 037/100: Add support for Jpeglib, Yuuki Harano, 2020/11/24
- feature/pgtk fe2297c 055/100: * pgtkmenu.c (set_frame_menubar): fix empty menu., Yuuki Harano, 2020/11/24
- feature/pgtk a167e23 057/100: * src/pgtkmenu.c (set_frame_menubar): Suppress gcc warning, Yuuki Harano, 2020/11/24
- feature/pgtk 5a72a07 053/100: * pgtk-win.el: fix compile-time warnings., Yuuki Harano, 2020/11/24
- feature/pgtk bb6862d 089/100: Fix crash on drag and drop,
Yuuki Harano <=
- feature/pgtk e405404 095/100: Fix startup failure on svg-unsupported environments, Yuuki Harano, 2020/11/24