Re: [php-gtk-cvs] cvs: php-gtk /ext/gtk+ gtk.overrides

From: Date: Sat, 17 Dec 2005 14:03:32 +0000
Subject: Re: [php-gtk-cvs] cvs: php-gtk /ext/gtk+ gtk.overrides
References: 1  Groups: php.gtk.dev 
Request: Send a blank email to php-gtk-dev+get-2119@lists.php.net to get a copy of this message
idle_add_priority isn't being written because idle_add_* is still in the 'ignores' list... still, if you remove it from there neither idle_add_full() (which we probably don't want in userspace anyway) nor idle_add_priority() is being written because GtkFunction isn't defined anywhere. According to my build logs, anyway...
function    Gtk::idle_add_full: unknown type 'GtkFunction'
function    Gtk::idle_add_priority: unknown type 'GtkFunction'
Strange to relate, idle_add() itself copes without. ----- Original Message ----- From: "Andrei Zmievski" <andrei@php.net> To: <php-gtk-cvs@lists.php.net> Sent: Saturday, December 10, 2005 11:20 PM Subject: [php-gtk-cvs] cvs: php-gtk /ext/gtk+ gtk.overrides
andrei Sat Dec 10 16:20:58 2005 EDT Modified files: /php-gtk/ext/gtk+ gtk.overrides Log: Implement gtk::idle_add() and gtk::idle_add_priority(). http://cvs.php.net/diff.php/php-gtk/ext/gtk+/gtk.overrides?r1=1.132&r2=1.133&ty=u Index: php-gtk/ext/gtk+/gtk.overrides diff -u php-gtk/ext/gtk+/gtk.overrides:1.132 php-gtk/ext/gtk+/gtk.overrides:1.133 --- php-gtk/ext/gtk+/gtk.overrides:1.132 Sat Nov 19 16:00:54 2005 +++ php-gtk/ext/gtk+/gtk.overrides Sat Dec 10 16:20:57 2005 @@ -287,6 +287,55 @@ } %% +override gtk_idle_add + +static void phpg_gtk_idle_add_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool with_priority) +{
+    gint priority = G_PRIORITY_DEFAULT;
+    zval *callback = NULL;
+    zval *extra = NULL;
+    zval *data = NULL;
+    char *callback_filename;
+    uint callback_lineno;
+    guint handler_id;
+    int req_args = with_priority ? 2 : 1;
+
+    if (ZEND_NUM_ARGS() < req_args) {
+        php_error(E_WARNING, "%s::%s() requires at least %d arguments, %d
given",
+                  get_active_class_name(NULL TSRMLS_CC),
+                  get_active_function_name(TSRMLS_C), req_args,
ZEND_NUM_ARGS());
+        return;
+    }
+
+    if (with_priority) {
+        if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), req_args, &extra,
"iV", &priority, &callback))
+            return;
+    } else {
+        if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), req_args, &extra,
"V", &callback))
+            return;
+    }
+
+    callback_filename = zend_get_executed_filename(TSRMLS_C);
+    callback_lineno = zend_get_executed_lineno(TSRMLS_C);
+    php_gtk_build_value(&data, "(VNsi)", callback, extra,
callback_filename, callback_lineno); +
+    handler_id = g_idle_add_full(priority, phpg_handler_marshal, data,
phpg_destroy_notify);
+    RETURN_LONG(handler_id);
+} + +PHP_METHOD +{
+    phpg_gtk_idle_add_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
+} + +%% +override gtk_idle_add_priority +PHP_METHOD +{
+    phpg_gtk_idle_add_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
+} + +%% add Gtk get_version PHP_METHOD { -- PHP-GTK CVS Mailing List (http://gtk.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php


« previous php.gtk.dev (#2119) next »