// included by glib2.pas {$IFDEF read_forward_definitions} {$ENDIF read_forward_definitions} //------------------------------------------------------------------------------ {$IFDEF read_interface_types} PGMainContext = pointer; PGMainLoop = pointer; PGSourceFunc = ^TGSourceFunc; TGSourceFunc = function (data:gpointer):gboolean;cdecl; {< private > } PGSourceCallbackFuncs = ^TGSourceCallbackFuncs; PGSource = ^TGSource; PGSourceFuncs = ^TGSourceFuncs; TGSource = record callback_data : gpointer; callback_funcs : PGSourceCallbackFuncs; source_funcs : PGSourceFuncs; ref_count : guint; context : PGMainContext; priority : gint; flags : guint; source_id : guint; poll_fds : PGSList; prev : PGSource; next : PGSource; reserved1 : gpointer; reserved2 : gpointer; end; TGSourceCallbackFuncs = record ref : procedure (cb_data:gpointer); cdecl; unref : procedure (cb_data:gpointer); cdecl; get : procedure (cb_data:gpointer; source:PGSource; func:PGSourceFunc; data:Pgpointer); cdecl; end; TGSourceDummyMarshal = procedure {no parameters} ;cdecl; { Can be NULL } { For use by g_source_set_closure } { Really is of type GClosureMarshal } TGSourceFuncs = record prepare : function (source:PGSource; timeout:gint):gboolean; cdecl; check : function (source:PGSource):gboolean; cdecl; dispatch : function (source:PGSource; callback:TGSourceFunc; user_data:gpointer):gboolean; cdecl; finalize : procedure (source:PGSource); cdecl; closure_callback : TGSourceFunc; closure_marshal : TGSourceDummyMarshal; end; PGPollFD = ^TGPollFD; TGPollFD = record fd : gint; events : gushort; revents : gushort; end; TGPollFunc = function (ufds:PGPollFD; nfsd:guint; timeout:gint):gint;cdecl; {$ENDIF read_interface_types} //------------------------------------------------------------------------------ {$IFDEF read_interface_rest} { Standard priorities } const G_PRIORITY_HIGH = -(100); G_PRIORITY_DEFAULT = 0; G_PRIORITY_HIGH_IDLE = 100; G_PRIORITY_DEFAULT_IDLE = 200; G_PRIORITY_LOW = 300; { GMainContext: } function g_main_context_new:PGMainContext;cdecl;external gliblib name 'g_main_context_new'; procedure g_main_context_ref(context:PGMainContext);cdecl;external gliblib name 'g_main_context_ref'; procedure g_main_context_unref(context:PGMainContext);cdecl;external gliblib name 'g_main_context_unref'; function g_main_context_default:PGMainContext;cdecl;external gliblib name 'g_main_context_default'; function g_main_context_iteration(context:PGMainContext; may_block:gboolean):gboolean;cdecl;external gliblib name 'g_main_context_iteration'; function g_main_context_pending(context:PGMainContext):gboolean;cdecl;external gliblib name 'g_main_context_pending'; { For implementation of legacy interfaces } function g_main_context_find_source_by_id(context:PGMainContext; source_id:guint):PGSource;cdecl;external gliblib name 'g_main_context_find_source_by_id'; function g_main_context_find_source_by_user_data(context:PGMainContext; user_data:gpointer):PGSource;cdecl;external gliblib name 'g_main_context_find_source_by_user_data'; function g_main_context_find_source_by_funcs_user_data(context:PGMainContext; funcs:PGSourceFuncs; user_data:gpointer):PGSource;cdecl;external gliblib name 'g_main_context_find_source_by_funcs_user_data'; { Low level functions for implementing custom main loops. } procedure g_main_context_wakeup(context:PGMainContext);cdecl;external gliblib name 'g_main_context_wakeup'; function g_main_context_acquire(context:PGMainContext):gboolean;cdecl;external gliblib name 'g_main_context_acquire'; procedure g_main_context_release(context:PGMainContext);cdecl;external gliblib name 'g_main_context_release'; function g_main_context_wait(context:PGMainContext; cond:PGCond; mutex:PGMutex):gboolean;cdecl;external gliblib name 'g_main_context_wait'; function g_main_context_prepare(context:PGMainContext; priority:Pgint):gboolean;cdecl;external gliblib name 'g_main_context_prepare'; function g_main_context_query(context:PGMainContext; max_priority:gint; timeout:Pgint; fds:PGPollFD; n_fds:gint):gint;cdecl;external gliblib name 'g_main_context_query'; function g_main_context_check(context:PGMainContext; max_priority:gint; fds:PGPollFD; n_fds:gint):gint;cdecl;external gliblib name 'g_main_context_check'; procedure g_main_context_dispatch(context:PGMainContext);cdecl;external gliblib name 'g_main_context_dispatch'; procedure g_main_context_set_poll_func(context:PGMainContext; func:TGPollFunc);cdecl;external gliblib name 'g_main_context_set_poll_func'; function g_main_context_get_poll_func(context:PGMainContext):TGPollFunc;cdecl;external gliblib name 'g_main_context_get_poll_func'; { Low level functions for use by source implementations } procedure g_main_context_add_poll(context:PGMainContext; fd:PGPollFD; priority:gint);cdecl;external gliblib name 'g_main_context_add_poll'; procedure g_main_context_remove_poll(context:PGMainContext; fd:PGPollFD);cdecl;external gliblib name 'g_main_context_remove_poll'; { GMainLoop: } function g_main_loop_new(context:PGMainContext; is_running:gboolean):PGMainLoop;cdecl;external gliblib name 'g_main_loop_new'; procedure g_main_loop_run(loop:PGMainLoop);cdecl;external gliblib name 'g_main_loop_run'; procedure g_main_loop_quit(loop:PGMainLoop);cdecl;external gliblib name 'g_main_loop_quit'; function g_main_loop_ref(loop:PGMainLoop):PGMainLoop;cdecl;external gliblib name 'g_main_loop_ref'; procedure g_main_loop_unref(loop:PGMainLoop);cdecl;external gliblib name 'g_main_loop_unref'; function g_main_loop_is_running(loop:PGMainLoop):gboolean;cdecl;external gliblib name 'g_main_loop_is_running'; function g_main_loop_get_context(loop:PGMainLoop):PGMainContext;cdecl;external gliblib name 'g_main_loop_get_context'; { GSource: } function g_source_new(source_funcs:PGSourceFuncs; struct_size:guint):PGSource;cdecl;external gliblib name 'g_source_new'; function g_source_ref(source:PGSource):PGSource;cdecl;external gliblib name 'g_source_ref'; procedure g_source_unref(source:PGSource);cdecl;external gliblib name 'g_source_unref'; function g_source_attach(source:PGSource; context:PGMainContext):guint;cdecl;external gliblib name 'g_source_attach'; procedure g_source_destroy(source:PGSource);cdecl;external gliblib name 'g_source_destroy'; procedure g_source_set_priority(source:PGSource; priority:gint);cdecl;external gliblib name 'g_source_set_priority'; function g_source_get_priority(source:PGSource):gint;cdecl;external gliblib name 'g_source_get_priority'; procedure g_source_set_can_recurse(source:PGSource; can_recurse:gboolean);cdecl;external gliblib name 'g_source_set_can_recurse'; function g_source_get_can_recurse(source:PGSource):gboolean;cdecl;external gliblib name 'g_source_get_can_recurse'; function g_source_get_id(source:PGSource):guint;cdecl;external gliblib name 'g_source_get_id'; function g_source_get_context(source:PGSource):PGMainContext;cdecl;external gliblib name 'g_source_get_context'; procedure g_source_set_callback(source:PGSource; func:TGSourceFunc; data:gpointer; notify:TGDestroyNotify);cdecl;external gliblib name 'g_source_set_callback'; { Used to implement g_source_connect_closure and internally } procedure g_source_set_callback_indirect(source:PGSource; callback_data:gpointer; callback_funcs:PGSourceCallbackFuncs);cdecl;external gliblib name 'g_source_set_callback_indirect'; procedure g_source_add_poll(source:PGSource; fd:PGPollFD);cdecl;external gliblib name 'g_source_add_poll'; procedure g_source_remove_poll(source:PGSource; fd:PGPollFD);cdecl;external gliblib name 'g_source_remove_poll'; procedure g_source_get_current_time(source:PGSource; timeval:PGTimeVal);cdecl;external gliblib name 'g_source_get_current_time'; { void g_source_connect_closure (GSource source, GClosure closure); } { Specific source types } function g_idle_source_new:PGSource;cdecl;external gliblib name 'g_idle_source_new'; function g_timeout_source_new(interval:guint):PGSource;cdecl;external gliblib name 'g_timeout_source_new'; { Miscellaneous functions } procedure g_get_current_time(result:PGTimeVal);cdecl;external gliblib name 'g_get_current_time'; { ============== Compat main loop stuff ================== } function g_main_new(is_running: gboolean): PGMainLoop; { these functions are maped to their newer versions } procedure g_main_run (loop:PGMainLoop);cdecl;external gliblib name 'g_main_loop_run'; procedure g_main_quit (loop:PGMainLoop);cdecl;external gliblib name 'g_main_loop_quit'; procedure g_main_destroy (loop:PGMainLoop);cdecl;external gliblib name 'g_main_loop_unref'; function g_main_is_running (loop:PGMainLoop):gboolean;cdecl;external gliblib name 'g_main_loop_is_running'; { Functions to manipulate the default main loop} function g_main_iteration (may_block: gboolean): gboolean; function g_main_pending: gboolean; // g_main_context_pending (NULL) procedure g_main_set_poll_func(func: TGPollFunc); // g_main_context_set_poll_func (NULL, func) { ======= end of Compat main loop stuff ================== } { Source manipulation by ID } function g_source_remove(tag:guint):gboolean;cdecl;external gliblib name 'g_source_remove'; function g_source_remove_by_user_data(user_data:gpointer):gboolean;cdecl;external gliblib name 'g_source_remove_by_user_data'; function g_source_remove_by_funcs_user_data(funcs:PGSourceFuncs; user_data:gpointer):gboolean;cdecl;external gliblib name 'g_source_remove_by_funcs_user_data'; { Idles and timeouts } function g_timeout_add_full(priority:gint; interval:guint; _function:TGSourceFunc; data:gpointer; notify:TGDestroyNotify):guint;cdecl;external gliblib name 'g_timeout_add_full'; function g_timeout_add(interval:guint; _function:TGSourceFunc; data:gpointer):guint;cdecl;external gliblib name 'g_timeout_add'; function g_idle_add(_function:TGSourceFunc; data:gpointer):guint;cdecl;external gliblib name 'g_idle_add'; function g_idle_add_full(priority:gint; _function:TGSourceFunc; data:gpointer; notify:TGDestroyNotify):guint;cdecl;external gliblib name 'g_idle_add_full'; function g_idle_remove_by_data(data:gpointer):gboolean;cdecl;external gliblib name 'g_idle_remove_by_data'; { Hook for GClosure / GSource integration. Don't touch } // GLIB_VAR GSourceFuncs g_timeout_funcs; // GLIB_VAR GSourceFuncs g_idle_funcs; {$ifdef windows} procedure g_main_poll_win32_msg_add(priority:gint; fd:PGPollFD; hwnd:guint);cdecl;external gliblib name 'g_main_poll_win32_msg_add'; {$endif} {$ENDIF read_interface_rest} // included by glib2.pas