raster pushed a commit to branch master.

http://git.enlightenment.org/apps/terminology.git/commit/?id=7568afa8dcd316885bd342f8f910c027e6e7f603

commit 7568afa8dcd316885bd342f8f910c027e6e7f603
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Mon Jan 11 13:23:13 2021 +0000

    controls - dont "done" more than once in window controls
    
    this avoids crashes when some over-zealous people click super-fast on
    control buttons.
    
    @fix
---
 src/bin/controls.c | 26 +++++++++-----------------
 1 file changed, 9 insertions(+), 17 deletions(-)

diff --git a/src/bin/controls.c b/src/bin/controls.c
index 957fe96..71e93a7 100644
--- a/src/bin/controls.c
+++ b/src/bin/controls.c
@@ -84,7 +84,6 @@ _cb_ct_copy(void *data,
    Evas_Object *term = ctx->term;
 
    controls_hide(ctx, EINA_TRUE);
-   ctx = NULL;
 
    termio_take_selection(term, ELM_SEL_TYPE_CLIPBOARD);
 }
@@ -98,7 +97,6 @@ _cb_ct_paste(void *data,
    Evas_Object *term = ctx->term;
 
    controls_hide(ctx, EINA_TRUE);
-   ctx = NULL;
 
    termio_paste_selection(term, ELM_SEL_TYPE_CLIPBOARD);
 }
@@ -112,7 +110,6 @@ _cb_ct_new(void *data,
    Evas_Object *term = ctx->term;
 
    controls_hide(ctx, EINA_TRUE);
-   ctx = NULL;
 
    main_new(term);
 }
@@ -127,7 +124,6 @@ _cb_ct_split_v(void *data,
 
 
    controls_hide(ctx, EINA_TRUE);
-   ctx = NULL;
 
    split_vertically(term, NULL);
 }
@@ -141,7 +137,6 @@ _cb_ct_split_h(void *data,
    Evas_Object *term = ctx->term;
 
    controls_hide(ctx, EINA_TRUE);
-   ctx = NULL;
 
    split_horizontally(term, NULL);
 }
@@ -164,7 +159,6 @@ _cb_ct_set_title(void *data,
    Evas_Object *term = ctx->term;
 
    controls_hide(ctx, EINA_TRUE);
-   ctx = NULL;
 
    term_set_title(termio_term_get(term));
 }
@@ -179,7 +173,6 @@ _cb_ct_close(void *data,
    Evas_Object *win = ctx->win;
 
    controls_hide(ctx, EINA_TRUE);
-   ctx = NULL;
 
    term_close(win, term, EINA_FALSE);
 }
@@ -190,18 +183,17 @@ _on_sub_done(void *data)
    Controls_Ctx *ctx = data;
 
    if (ctx->donecb)
-     ctx->donecb(ctx->donedata);
+     {
+        ctx->donecb(ctx->donedata);
+        ctx->donecb = NULL;
 
-   eina_hash_del(controls, &ctx->win, ctx);
+        eina_hash_del(controls, &ctx->win, ctx);
 
-   if (evas_object_visible_get(ctx->frame))
-     {
-        evas_object_event_callback_add(ctx->frame, EVAS_CALLBACK_HIDE,
-                                       _cb_hidden, ctx);
-     }
-   else
-     {
-        _cb_hidden(ctx, NULL, NULL, NULL);
+        if (evas_object_visible_get(ctx->frame))
+          evas_object_event_callback_add(ctx->frame, EVAS_CALLBACK_HIDE,
+                                         _cb_hidden, ctx);
+        else
+          _cb_hidden(ctx, NULL, NULL, NULL);
      }
 }
 

-- 


Reply via email to