diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-11-29 17:07:58 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-11-29 17:07:58 +0100 |
| commit | 0d662b854358d3b29cc2cd6e078167dcc9c3b1bb (patch) | |
| tree | 2491e97e92c121622ddfa8126e3a237f7e86edb3 /src/tools | |
| parent | ea0b23b7836cd6b4692b1ad8d01b2a9afe486cd4 (diff) | |
| download | box64-0d662b854358d3b29cc2cd6e078167dcc9c3b1bb.tar.gz box64-0d662b854358d3b29cc2cd6e078167dcc9c3b1bb.zip | |
[WRAPPER] Refactored some glib2 signal handling
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/gtkclass.c | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/src/tools/gtkclass.c b/src/tools/gtkclass.c index e40dcbb2..05a078bb 100644 --- a/src/tools/gtkclass.c +++ b/src/tools/gtkclass.c @@ -5577,74 +5577,3 @@ void SetGTypeParent(void* f) g_type_parent = f; } -my_signal_t* new_mysignal(void* f, void* data, void* destroy) -{ - my_signal_t* sig = (my_signal_t*)box_calloc(1, sizeof(my_signal_t)); - sig->sign = SIGN; - sig->c_handler = (uintptr_t)f; - sig->destroy = (uintptr_t)destroy; - sig->data = data; - int ret; - kh_put(signalmap, my_signalmap, (uintptr_t)sig, &ret); - return sig; -} -void my_signal_delete(my_signal_t* sig) -{ - khint_t k = kh_get(signalmap, my_signalmap, (uintptr_t)sig); - if(k!=kh_end(my_signalmap)) { - kh_del(signalmap, my_signalmap, k); - } else { - printf_log(LOG_NONE, "Warning, my_signal_delete called with an unrefereced signal!\n"); - } - uintptr_t d = sig->destroy; - if(d) { - RunFunctionFmt(d, "p", sig->data); - } - printf_log(LOG_DEBUG, "gtk Data deleted, sig=%p, data=%p, destroy=%p\n", sig, sig->data, (void*)d); - box_free(sig); -} -int my_signal_is_valid(void* sig) -{ - khint_t k = kh_get(signalmap, my_signalmap, (uintptr_t)sig); - if(k!=kh_end(my_signalmap)) { - /*if(((my_signal_t*)c)->sign == SIGN) - return 1; - else - printf_log(LOG_NONE, "Warning, incohrent my_signal_t structure referenced\n");*/ - return 1; - } - return 0; -} - -int my_signal_cb(void* a, void* b, void* c, void* d) -{ - // signal can have many signature... so first job is to find the data! - // hopefully, no callback have more than 4 arguments... - my_signal_t* sig = NULL; - int i = 0; - if(my_signal_is_valid(a)) { - sig = (my_signal_t*)a; - i = 1; - } - if(!sig && my_signal_is_valid(b)) { - sig = (my_signal_t*)b; - i = 2; - } - if(!sig && my_signal_is_valid(c)) { - sig = (my_signal_t*)c; - i = 3; - } - if(!sig && my_signal_is_valid(d)) { - sig = (my_signal_t*)d; - i = 4; - } - printf_log(LOG_DEBUG, "gtk Signal called, sig=%p, NArgs=%d\n", sig, i); - switch(i) { - case 1: return (int)RunFunctionFmt(sig->c_handler, "p", sig->data); - case 2: return (int)RunFunctionFmt(sig->c_handler, "pp", a, sig->data); - case 3: return (int)RunFunctionFmt(sig->c_handler, "ppp", a, b, sig->data); - case 4: return (int)RunFunctionFmt(sig->c_handler, "pppp", a, b, c, sig->data); - } - printf_log(LOG_NONE, "Warning, Gtk signal callback but no data found!"); - return 0; -} |