From c91fbaf3f9b78700148830b072d79057af2ae1a4 Mon Sep 17 00:00:00 2001 From: hero Date: Sat, 17 Aug 2024 04:39:26 +0200 Subject: [PATCH] fix signal macros --- src/core/shared/signal.cpp | 6 ++++++ src/core/signals/signals.cpp | 9 +-------- src/sdk/signal.h | 29 +++++++++++++++-------------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/core/shared/signal.cpp b/src/core/shared/signal.cpp index 9c59b7f..64cd6fe 100644 --- a/src/core/shared/signal.cpp +++ b/src/core/shared/signal.cpp @@ -71,3 +71,9 @@ void c_signal::disable( signal_t* signal ) { signal_t* c_signal::get( const char* name ) { return signals[ name ]; } +void c_signal::remove_all( ) { + for ( auto& signal : signals ) { + signal.second->disable( ); + } + signals.clear( ); +} diff --git a/src/core/signals/signals.cpp b/src/core/signals/signals.cpp index 03602b0..de30c8b 100644 --- a/src/core/signals/signals.cpp +++ b/src/core/signals/signals.cpp @@ -72,12 +72,5 @@ bool signals::initialize( ) { } void signals::uninitialize( ) { - photon->signal->remove( "on_screen_size_changed" ); - photon->signal->remove( "update_button_state" ); - photon->signal->remove( "in_key_event" ); - photon->signal->remove( "lock_cursor" ); - photon->signal->remove( "paint" ); - photon->signal->remove( "set_signon_state" ); - photon->signal->remove( "frame" ); - photon->signal->remove( "game_frame" ); + photon->signal->remove_all( ); } diff --git a/src/sdk/signal.h b/src/sdk/signal.h index 4a5db1c..c010777 100644 --- a/src/sdk/signal.h +++ b/src/sdk/signal.h @@ -38,6 +38,7 @@ class c_signal { virtual void enable( signal_t* signal, void* handler ); virtual void disable( signal_t* signal ); virtual signal_t* get( const char* name ); + virtual void remove_all( ); }; #ifdef _WIN32 @@ -119,7 +120,7 @@ class c_signal { return ret; \ } -#define _SIGNAL_NOTMEMBER0( t, callconv, name ) \ +#define _SIGNAL0_NOTMEMBER( t, callconv, name ) \ static t callconv name##_handler( ) { \ t ret = 0; \ auto sig = photon->signal->get( #name ); \ @@ -129,7 +130,7 @@ class c_signal { } \ return ret; \ } -#define _SIGNAL_NOTMEMBER1( t, callconv, name, a1_t, a1 ) \ +#define _SIGNAL1_NOTMEMBER( t, callconv, name, a1_t, a1 ) \ static t callconv name##_handler( a1_t a1 ) { \ t ret = 0; \ auto sig = photon->signal->get( #name ); \ @@ -139,7 +140,7 @@ class c_signal { } \ return ret; \ } -#define _SIGNAL_NOTMEMBER2( t, callconv, name, a1_t, a1, a2_t, a2 ) \ +#define _SIGNAL2_NOTMEMBER( t, callconv, name, a1_t, a1, a2_t, a2 ) \ static t callconv name##_handler( a1_t a1, a2_t a2 ) { \ t ret = 0; \ auto sig = photon->signal->get( #name ); \ @@ -149,7 +150,7 @@ class c_signal { } \ return ret; \ } -#define _SIGNAL_NOTMEMBER3( t, callconv, name, a1_t, a1, a2_t, a2, a3_t, a3 ) \ +#define _SIGNAL3_NOTMEMBER( t, callconv, name, a1_t, a1, a2_t, a2, a3_t, a3 ) \ static t callconv name##_handler( a1_t a1, a2_t a2, a3_t a3 ) { \ t ret = 0; \ auto sig = photon->signal->get( #name ); \ @@ -159,7 +160,7 @@ class c_signal { } \ return ret; \ } -#define _SIGNAL_NOTMEMBER4( t, callconv, name, a1_t, a1, a2_t, a2, a3_t, a3_, a4_t, a4 ) \ +#define _SIGNAL4_NOTMEMBER( t, callconv, name, a1_t, a1, a2_t, a2, a3_t, a3_, a4_t, a4 ) \ static t callconv name##_handler( a1_t a1, a2_t a2, a3_t a3, a4_t a4 ) { \ t ret = 0; \ auto sig = photon->signal->get( #name ); \ @@ -169,7 +170,7 @@ class c_signal { } \ return ret; \ } -#define _SIGNAL_NOTMEMBER5( t, callconv, name, a1_t, a1, a2_t, a2, a3_t, a3_, a4_t, a4, a5_t, a5 ) \ +#define _SIGNAL5_NOTMEMBER( t, callconv, name, a1_t, a1, a2_t, a2, a3_t, a3_, a4_t, a4, a5_t, a5 ) \ static t callconv name##_handler( a1_t a1, a2_t a2, a3_t a3, a4_t a4, a5_t a5 ) { \ t ret = 0; \ auto sig = photon->signal->get( #name ); \ @@ -179,7 +180,7 @@ class c_signal { } \ return ret; \ } -#define _SIGNAL_NOTMEMBER6( t, callconv, name, a1_t, a1, a2_t, a2, a3_t, a3_, a4_t, a4, a5_t, a5, a6_t, a6 ) \ +#define _SIGNAL6_NOTMEMBER( t, callconv, name, a1_t, a1, a2_t, a2, a3_t, a3_, a4_t, a4, a5_t, a5, a6_t, a6 ) \ static t callconv name##_handler( a1_t a1, a2_t a2, a3_t a3, a4_t a4, a5_t a5, a6_t a6 ) { \ t ret = 0; \ auto sig = photon->signal->get( #name ); \ @@ -198,13 +199,13 @@ class c_signal { #define _SIGNAL_CALLBACK5( t, callconv, name, a1_t, a1, a2_t, a2, a3_t, a3, a4_t, a4, a5_t, a5 ) t name##_cbk( t( callconv* original )( void*, a1_t, a2_t, a3_t, a4_t, a5_t ), void* ecx, a1_t a1, a2_t a2, a3_t a3, a4_t a4, a5_t a5 ) #define _SIGNAL_CALLBACK6( t, callconv, name, a1_t, a1, a2_t, a2, a3_t, a3, a4_t, a4, a5_t, a5, a6_t, a6 ) t name##_cbk( t( callconv* original )( void*, a1_t, a2_t, a3_t, a4_t, a5_t, a6_t ), void* ecx, a1_t a1, a2_t a2, a3_t a3, a4_t a4, a5_t a5, a6_t a6 ) -#define _SIGNAL_CALLBACK_NOTMEMBER0( t, callconv, name ) t name##_cbk( t( callconv* original )( ) -#define _SIGNAL_CALLBACK_NOTMEMBER1( t, callconv, name, a1_t, a1 ) t name##_cbk( t( callconv* original )( a1_t ), a1_t a1 ) -#define _SIGNAL_CALLBACK_NOTMEMBER2( t, callconv, name, a1_t, a1, a2_t, a2 ) t name##_cbk( t( callconv* original )( a1_t, a2_t ), a1_t a1, a2_t a2 ) -#define _SIGNAL_CALLBACK_NOTMEMBER3( t, callconv, name, a1_t, a1, a2_t, a2, a3_t, a3 ) t name##_cbk( t( callconv* original )( a1_t, a2_t, a3_t ), a1_t a1, a2_t a2, a3_t a3 ) -#define _SIGNAL_CALLBACK_NOTMEMBER4( t, callconv, name, a1_t, a1, a2_t, a2, a3_t, a3, a4_t, a4 ) t name##_cbk( t( callconv* original )( a1_t, a2_t, a3_t, a4_t ), a1_t a1, a2_t a2, a3_t a3, a4_t a4 ) -#define _SIGNAL_CALLBACK_NOTMEMBER5( t, callconv, name, a1_t, a1, a2_t, a2, a3_t, a3, a4_t, a4, a5_t, a5 ) t name##_cbk( t( callconv* original )( a1_t, a2_t, a3_t, a4_t, a5_t ), a1_t a1, a2_t a2, a3_t a3, a4_t a4, a5_t a5 ) -#define _SIGNAL_CALLBACK_NOTMEMBER6( t, callconv, name, a1_t, a1, a2_t, a2, a3_t, a3, a4_t, a4, a5_t, a5, a6_t, a6 ) t name##_cbk( t( callconv* original )( a1_t, a2_t, a3_t, a4_t, a5_t, a6_t ), a1_t a1, a2_t a2, a3_t a3, a4_t a4, a5_t a5, a6_t a6 ) +#define _SIGNAL_CALLBACK0_NOTMEMBER( t, callconv, name ) t name##_cbk( t( callconv* original )( ) +#define _SIGNAL_CALLBACK1_NOTMEMBER( t, callconv, name, a1_t, a1 ) t name##_cbk( t( callconv* original )( a1_t ), a1_t a1 ) +#define _SIGNAL_CALLBACK2_NOTMEMBER( t, callconv, name, a1_t, a1, a2_t, a2 ) t name##_cbk( t( callconv* original )( a1_t, a2_t ), a1_t a1, a2_t a2 ) +#define _SIGNAL_CALLBACK3_NOTMEMBER( t, callconv, name, a1_t, a1, a2_t, a2, a3_t, a3 ) t name##_cbk( t( callconv* original )( a1_t, a2_t, a3_t ), a1_t a1, a2_t a2, a3_t a3 ) +#define _SIGNAL_CALLBACK4_NOTMEMBER( t, callconv, name, a1_t, a1, a2_t, a2, a3_t, a3, a4_t, a4 ) t name##_cbk( t( callconv* original )( a1_t, a2_t, a3_t, a4_t ), a1_t a1, a2_t a2, a3_t a3, a4_t a4 ) +#define _SIGNAL_CALLBACK5_NOTMEMBER( t, callconv, name, a1_t, a1, a2_t, a2, a3_t, a3, a4_t, a4, a5_t, a5 ) t name##_cbk( t( callconv* original )( a1_t, a2_t, a3_t, a4_t, a5_t ), a1_t a1, a2_t a2, a3_t a3, a4_t a4, a5_t a5 ) +#define _SIGNAL_CALLBACK6_NOTMEMBER( t, callconv, name, a1_t, a1, a2_t, a2, a3_t, a3, a4_t, a4, a5_t, a5, a6_t, a6 ) t name##_cbk( t( callconv* original )( a1_t, a2_t, a3_t, a4_t, a5_t, a6_t ), a1_t a1, a2_t a2, a3_t a3, a4_t a4, a5_t a5, a6_t a6 ) #define _SIGNAL_NAME__thiscall( _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, NAME, ... ) NAME #define _SIGNAL_NAME__rescall( _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, NAME, ... ) NAME