commit 6bcfaf6e1e2331b704dd6067d45d6840e87632a2 Author: Simon Feltman Date: Mon Aug 18 18:57:28 2014 -0700 configure.ac: pre release version bump to 3.13.90 configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 3b5b590599ca98cc51871878618cd59fc05212d1 Author: Simon Feltman Date: Mon Aug 18 02:33:54 2014 -0700 gtk-demo: Don't use deprecated constructor for Gtk.Label demos/gtk-demo/demos/pickers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 5b82051d23f8d759b6fa57a4e9327e300568c89f Author: Simon Feltman Date: Sat Aug 9 02:30:43 2014 -0700 Fast path Python Property getter when accessed through GObject interfaces Break do_get_property() call into a re-usable function. Call do_get_property() Python implementations instead of going through GObject machinery for Python GObjects. This gives a performance boost for Python GObject properties when accessed via. obj.get_property() and obj.props. https://bugzilla.gnome.org/show_bug.cgi?id=723872 gi/gobjectmodule.c | 11 ++++------- gi/pygi-property.c | 35 +++++++++++++++++++++++++++-------- gi/pygi-property.h | 3 +++ 3 files changed, 34 insertions(+), 15 deletions(-) commit 0a99f878e40c8d683157dea69c3c9ac40d13d734 Author: Simon Feltman Date: Sat Aug 9 02:10:11 2014 -0700 Fast path Python Property getter when accessing descriptor directly Call the Python implemented fget() when a property is accessed directly on a Python implemented GObject. This skips going through the GObject machinery which ends up calling fget() and marshalling the results through GValues. https://bugzilla.gnome.org/show_bug.cgi?id=723872 gi/_propertyhelper.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) commit 74722386192ad27aac8855d4603d8120af82c98e Author: Simon Feltman Date: Mon Aug 18 02:05:58 2014 -0700 Don't use GI type for determining pointer extraction from GValues Replace usage of g_type_is_a() with G_VALUE_HOLDS() when extracting pointers from GValues being marshalled from properties and signals. This fixes fallout from commit abdfb0f. gi/pygi-value.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) commit 2601011e9eb3b5f391161313ed568e5c4b67c99a Author: Simon Feltman Date: Fri Aug 8 23:58:17 2014 -0700 Fast path property access for basic types Attempt marshalling with pygi_value_to_py_basic_type() prior to looking at GI info. This gives a quick conversion for basic types like bools, ints, and strings without having to go through GIArgument and GI conversions. This gives approximately a 3x performance boost for accessing these types with the unified GValue marshaller. https://bugzilla.gnome.org/show_bug.cgi?id=726999 gi/pygi-property.c | 9 +++++++++ gi/pygi-value.c | 26 ++++++++++++++++++-------- 2 files changed, 27 insertions(+), 8 deletions(-) commit 8f4b06f700ed79df32774fad8e2a2a922bfbfbe5 Author: Simon Feltman Date: Fri Aug 8 16:31:01 2014 -0700 Break pyg_value_as_pyobject into two functions Add pygi_value_to_py_basic_type() which is limited to handling basic types that don't need introspection information when marshalling to Python. Add pygi_value_to_py_structured_type() for marshalling of structured data which can eventually accept GI type hints. https://bugzilla.gnome.org/show_bug.cgi?id=726999 gi/pygi-value.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++---------- gi/pygi-value.h | 6 +++++ 2 files changed, 68 insertions(+), 12 deletions(-) commit b0236d6fde137e0b2ecf7f5556ad5d53c22874bc Author: Simon Feltman Date: Fri Aug 8 20:55:28 2014 -0700 Unify property getters Consolidate duplicate logic into pygi_get_property_value(). Use the function for GObject.get_property(), GObject.get_properties(), and GObject.props. Remove overridden expected failures in TestCGetPropertyMethod which now work due to the unification. https://bugzilla.gnome.org/show_bug.cgi?id=733893 https://bugzilla.gnome.org/show_bug.cgi?id=726999 gi/pygi-property.c | 85 +++++++++++++++++++++++++++++------------- gi/pygi-property.h | 4 ++ gi/pygobject.c | 97 +++++++----------------------------------------- tests/test_properties.py | 38 ------------------- 4 files changed, 77 insertions(+), 147 deletions(-) commit abdfb0fa3f72f9bf822c472d16c90d6b1871610b Author: Simon Feltman Date: Mon Jul 28 19:09:30 2014 -0700 Merge pygi_get_property_value and _pygi_argument_from_g_value Merge duplicated GValue marshaling code which has diverged over time (commits 3606eb20, ee62df4d, e14ebab6, 8cfd596c, 9f50fd21, 0d099bdb, and 216caf59). Use _pygi_argument_to_array within pygi_get_property_value. This is needed in the new code for supporting GI_TYPE_TAG_ARRAY and also fixes bug 669496. Side effects of this change also include support for properties holding G_TYPE_FLAGS and G_TYPE_PARAM. https://bugzilla.gnome.org/show_bug.cgi?id=726999 gi/pygi-property.c | 140 +++++------------------------------------------------ gi/pygi-value.c | 24 ++++++--- 2 files changed, 28 insertions(+), 136 deletions(-) commit 142ff1903d34876db3d1bee5e9782ac49de12313 Author: Simon Feltman Date: Mon Jul 28 04:40:36 2014 -0700 Never dup data structures when marshaling signal in arguments Always assume transfer-none of GValue arguments to signal handlers. A signal handler with arguments marked as transfer-full does not make any sense, so assume they are always transfer-none. https://bugzilla.gnome.org/show_bug.cgi?id=726999 gi/pygi-signal-closure.c | 4 +--- gi/pygi-value.c | 4 +++- 2 files changed, 4 insertions(+), 4 deletions(-) commit 04816f74194bd2c95b8b958dcf9ed5da5a83e001 Author: Simon Feltman Date: Mon Jul 28 04:23:39 2014 -0700 Never dup data structures when marshaling from g_object_get_property() Always use transfer-none with the results of g_object_get_property() and assume g_value_unset() will cleanup the results. This gives us control over memory of properties and limits property anotations to value typing. https://bugzilla.gnome.org/show_bug.cgi?id=726999 gi/pygi-property.c | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) commit 85175047e66dfc0c0263eac91d8056a95d0a60a0 Author: Simon Feltman Date: Tue Jul 29 19:29:28 2014 -0700 Refactor boxed wrapper memory management strategy Change pygi_boxed_new() to accept "copy_boxed" instead of "free_on_dealloc". This changes memory management so the PyGIBoxed wrapper owns the boxed pointer given to it. Use __del__ instead of dealloc for freeing the boxed memory. This is needed for edge cases where objects like GSource can trigger the finalized callback during de-alloc, resulting in the PyObjects references counts being manipulated and triggering a re-entrant de-alloc. Add hack to keep Gtk.TreeIter.do_iter_next/previous implementations working which rely on pass-by-reference. See also: https://bugzilla.gnome.org/show_bug.cgi?id=734465 https://bugzilla.gnome.org/show_bug.cgi?id=722899 https://bugzilla.gnome.org/show_bug.cgi?id=726999 gi/gimodule.c | 6 +++- gi/overrides/GLib.py | 4 --- gi/overrides/GObject.py | 3 ++ gi/pygi-boxed.c | 54 +++++++++++++++++++++++++------- gi/pygi-boxed.h | 4 +-- gi/pygi-source.c | 6 ++-- gi/pygi-struct-marshal.c | 81 +++++++++++++++++++++++++++++++++++++++++++++--- tests/test_gi.py | 1 - tests/test_source.py | 8 +++-- 9 files changed, 140 insertions(+), 27 deletions(-) commit 62aed0977090f7099a5e538209f7c680ea22fe12 Author: Simon Feltman Date: Sun Aug 17 19:04:51 2014 -0700 Replace GObject.signal_query with introspected version Remove the static bindings for GObject.signal_query and replace with a Python compatibility shim which utilizes the introspection exposed version of the function. https://bugzilla.gnome.org/show_bug.cgi?id=688792 gi/gobjectmodule.c | 89 ------------------------------------------------- gi/overrides/GObject.py | 39 ++++++++++++---------- 2 files changed, 21 insertions(+), 107 deletions(-) commit 4e130d72a5492fc00c61a816eddccdbc4f558b91 Author: Simon Feltman Date: Sun Aug 17 19:03:32 2014 -0700 Use array lengths specified on struct fields Add array length marshalling policy for struct fields. This fixes accessing C array fields on structs which also specify a length field. https://bugzilla.gnome.org/show_bug.cgi?id=688792 gi/pygi-argument.c | 14 ++++++------- gi/pygi-argument.h | 4 ++++ gi/pygi-info.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 68 insertions(+), 9 deletions(-) commit c55d029d2d67b5920e9467212e22b0ad58d3ded8 Author: Simon Feltman Date: Sun Aug 17 18:15:23 2014 -0700 Refactor signal array length marshalling to support a length policy Replace passing arrays of data to non-caching array marshallers with a policy closure that can be customized depending on context. In the case of signals, this is mostly scaffolding which will be replaced with caching marshallers. However, it opens the legacy marshaller for usage with struct and object array fields. https://bugzilla.gnome.org/show_bug.cgi?id=688792 gi/pygi-argument.c | 70 ++++++++++++++++++++++++++++++++---------------- gi/pygi-argument.h | 14 +++++++--- gi/pygi-signal-closure.c | 8 ++++-- 3 files changed, 64 insertions(+), 28 deletions(-) commit 3270dad356c44f5fef7571a9f29b22e7c293fa2c Author: Simon Feltman Date: Sun Aug 17 13:58:10 2014 -0700 Remove dead code for marshalling array lengths in the context of vfuncs Remove usage of the args parameter from _pygi_argument_to_array. This is no longer used because array marshalling for vfuncs is now handled by the cached marshaller. https://bugzilla.gnome.org/show_bug.cgi?id=688792 gi/pygi-argument.c | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) commit 6046ca87697fe80c6c0eb70f1efcad24de4f4fd8 Author: Simon Feltman Date: Sun Aug 17 21:53:55 2014 -0700 Fix memory leak with unboxed caller allocated structs Take caller-allocates into account when wrapping unboxed structures. This will free the allocated memory when the Python object is de-alloced. gi/pygi-struct-marshal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c607f07f5ae3ca62ee3a2649f84330eaaa8801c6 Author: Simon Feltman Date: Sat Aug 16 22:34:29 2014 -0700 tests: Add reference count test for signal connection arguments Add tests for ensuring reference counts are what we expect for connect() callback, user_data, and swap object (currently broken due to bug 688064). https://bugzilla.gnome.org/show_bug.cgi?id=727004 tests/test_signal.py | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) commit 7076669aadfc5227144df87277d69ae66865770a Author: Tobias Mueller Date: Sat Aug 16 17:46:50 2014 -0700 Don't mask GObject sub-class doc strings in meta-class If a class has a __doc__ attribute explicitly set, always return it. Only generate doc strings for classes coming from gi.repository or gi.overrides. Co-Authored-By: Simon Feltman https://bugzilla.gnome.org/show_bug.cgi?id=731452 https://bugzilla.gnome.org/show_bug.cgi?id=734926 gi/types.py | 12 +++++++++++- tests/test_docstring.py | 2 -- 2 files changed, 11 insertions(+), 3 deletions(-) commit 4cdca4328da7442be247e775294fc676cf677bb7 Author: Piotr Iwaniuk Date: Sat Aug 16 15:06:40 2014 -0700 tests: Add failing tests for GObject sub-class doc-strings Add tests for sub-class docstrings set with either doc-string syntax and by setting the __doc__ attribute directly. Co-Authored-By: Simon Feltman https://bugzilla.gnome.org/show_bug.cgi?id=731452 tests/test_docstring.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) commit 9328a6721909322f0e1444e5285ae1b7b5bf1e3c Author: Simon Feltman Date: Thu Aug 14 22:47:14 2014 -0700 configure.ac: post release version bump to 3.13.5 configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 49fd1662623f6dbb6af16b9fbfc0fb57707a7eee Author: Simon Feltman Date: Thu Aug 14 22:42:27 2014 -0700 release 3.13.4 NEWS | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+)