diff options
author | Sébastien Helleu <flashcode@flashtux.org> | 2016-03-21 18:11:21 +0100 |
---|---|---|
committer | Sébastien Helleu <flashcode@flashtux.org> | 2016-03-21 18:11:21 +0100 |
commit | cf6aca1619c32422a43fa3d82e0674f6b7b49fe9 (patch) | |
tree | 65392ef12eab877f544fe306fe0abb98214ddebd /src/plugins/irc/irc-server.h | |
parent | 6d764b64c50adb19309a9de14bfeafac648ab47a (diff) | |
download | weechat-cf6aca1619c32422a43fa3d82e0674f6b7b49fe9.zip |
core: add pointer in some callbacks (closes #406)
This pointer is the first argument received by callbacks, and the
existing argument "data" is now automatically freed by WeeChat when the
object containing the callback is removed.
With this new pointer, the linked list of callbacks in scripts has been
removed. This will improve speed of scripts (using a lot of hooks),
reduce memory used by scripts and reduce time to unload scripts.
Following functions are affected in the C API:
* exec_on_files
* config_new
* config_new_section
* config_new_option
* hook_command
* hook_command_run
* hook_timer
* hook_fd
* hook_process
* hook_process_hashtable
* hook_connect
* hook_print
* hook_signal
* hook_hsignal
* hook_config
* hook_completion
* hook_modifier
* hook_info
* hook_info_hashtable
* hook_infolist
* hook_hdata
* hook_focus
* unhook_all_plugin
* buffer_new
* bar_item_new
* upgrade_new
* upgrade_read
Diffstat (limited to 'src/plugins/irc/irc-server.h')
-rw-r--r-- | src/plugins/irc/irc-server.h | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/plugins/irc/irc-server.h b/src/plugins/irc/irc-server.h index 8ba3d96e6..1d14957d8 100644 --- a/src/plugins/irc/irc-server.h +++ b/src/plugins/irc/irc-server.h @@ -330,9 +330,11 @@ char *irc_server_fingerprint_str_sizes (); extern int irc_server_connect (struct t_irc_server *server); extern void irc_server_auto_connect (int auto_connect); extern void irc_server_autojoin_channels (); -extern int irc_server_recv_cb (void *data, int fd); -extern int irc_server_timer_sasl_cb (void *data, int remaining_calls); -extern int irc_server_timer_cb (void *data, int remaining_calls); +extern int irc_server_recv_cb (const void *pointer, void *data, int fd); +extern int irc_server_timer_sasl_cb (const void *pointer, void *data, + int remaining_calls); +extern int irc_server_timer_cb (const void *pointer, void *data, + int remaining_calls); extern void irc_server_outqueue_free_all (struct t_irc_server *server, int priority); extern int irc_server_get_channel_count (struct t_irc_server *server); @@ -347,14 +349,21 @@ extern void irc_server_disconnect (struct t_irc_server *server, int switch_address, int reconnect); extern void irc_server_disconnect_all (); extern void irc_server_free (struct t_irc_server *server); -extern int irc_server_xfer_send_ready_cb (void *data, const char *signal, - const char *type_data, void *signal_data); -extern int irc_server_xfer_resume_ready_cb (void *data, const char *signal, - const char *type_data, void *signal_data); -extern int irc_server_xfer_send_accept_resume_cb (void *data, const char *signal, +extern int irc_server_xfer_send_ready_cb (const void *pointer, void *data, + const char *signal, + const char *type_data, + void *signal_data); +extern int irc_server_xfer_resume_ready_cb (const void *pointer, void *data, + const char *signal, + const char *type_data, + void *signal_data); +extern int irc_server_xfer_send_accept_resume_cb (const void *pointer, + void *data, + const char *signal, const char *type_data, void *signal_data); -extern struct t_hdata *irc_server_hdata_server_cb (void *data, +extern struct t_hdata *irc_server_hdata_server_cb (const void *pointer, + void *data, const char *hdata_name); extern int irc_server_add_to_infolist (struct t_infolist *infolist, struct t_irc_server *server); |