Commit Graph

774 Commits

Author SHA1 Message Date
Christian Persch
2d4e48b73c Tiny docs fix 2010-06-19 20:04:20 +02:00
Christian Persch
db68f8203a Add g_value_take_variant
Turns out we do need g_value_take_variant(), so we can correctly
implement VARIANT:* marshalers.

Bug #621947.
2010-06-19 19:07:36 +02:00
Christian Persch
bdd8fef4c0 Fix VARIANT out args
Use g_value_set_variant(), not the nonexistent g_value_take_variant().
2010-06-18 00:38:46 +02:00
Christian Persch
86d681ba3e Distcheck fix
Add a missing symbol to gobject.symbols.
2010-06-17 23:50:10 +02:00
Matthias Clasen
19a752a5f4 fix a typo 2010-06-17 15:53:08 -04:00
Christian Persch
4708b8ecc3 Add fundamental type and pspec for GVariant
Make G_TYPE_VARIANT a fundamental type instead of boxed, and add
g_variant_{set,get,dup}_variant.

Add GParamSpecVariant.

Bug #610863.
2010-06-17 21:00:54 +02:00
Christian Persch
6a1cb9f697 Typo fix 2010-06-16 18:47:20 +02:00
Emmanuele Bassi
33aa4b4c66 binding: Use a hash table
Since an object instance might have a lot of bindings, using a list
might become a performance issue when removing them. Using a simple
hash table guarantees constant time lookup, which is the most common
operation.
2010-06-16 15:08:10 +01:00
Emmanuele Bassi
f72f65643f tests: Add a chain binding
Test the case with a chain like A → B, B → C, and what happens when
switching to a direct A → C link.

https://bugzilla.gnome.org/show_bug.cgi?id=621782
2010-06-16 14:56:59 +01:00
Christian Persch
1b8ee5196e Sprinkle some $(AM_V_GEN) around to make the build more silent. 2010-06-15 22:01:02 -04:00
Emmanuele Bassi
6d1d9cf1b5 gobject: Add GBinding
GBinding is a simple, opaque object that represents a binding between a
property on a GObject instance (source) and property on another GObject
instance (target).

https://bugzilla.gnome.org/show_bug.cgi?id=348080
2010-06-15 16:06:18 +01:00
Damien Lespiau
f3879a4bdc Introduce g_object_notify_by_pspec()
g_object_notify_by_pspec() will emit the "notify" signal on the given
pspec, short-circuiting the hash table lookup needed by
g_object_notify(). The suggested and documented way of using
g_object_notify_by_pspec() is similar to the way of emitting signals
with their ID.

Emission tests (with no handler attached to the notify signal) show a
10-15% speedup over using g_object_notify().

https://bugzilla.gnome.org/show_bug.cgi?id=615425
2010-06-15 10:51:36 +01:00
Alexander Larsson
8e41be13ef Add dtrace and systemtap support for gobject
This adds static markers and systemtap tapsets for:

* type creation
* object lifetimes (creation, ref, unref, dispose, finalize)
* signal creation and emission

Signal emissions and finalization marker have a corresponding
*_end (or *-end in dtrace) version that is when the corresponding
operation is finished.

https://bugzilla.gnome.org/show_bug.cgi?id=606044
2010-05-27 14:51:41 -04:00
Matthias Clasen
8db946fdfb Clean up man page handling
Remove all formatted man pages from git, and use the same
Makefile fragment in all doc dirs.
2010-05-21 22:28:42 -04:00
Sebastian Dröge
936ff022f2 Don't include __bss_start, _edata and _end symbols in the abichecks
They are added by the binutils gold linker.
2010-05-11 06:17:25 +02:00
Ryan Lortie
47805f4e0c Bug 617947 - glib-mkenums: add @valuenum@ support
Add a @valuenum@ substitution that outputs the integer value of a
particular enum value.  The value is determined by using (sandboxed)
perl to evaluate C expression.  If evaluation fails then glib-mkenums
dies loudly.  Evaluation is only enabled if '@valuenum@' appears in the
template file, so existing users will not be affected.
2010-05-06 14:21:39 -05:00
Ryan Lortie
7aa71527e5 glib-mkenums: Fix support for comment templates
Currently, specifying a comment template in the template file results in
the given template being appended to the default (C-style) one rather
than replacing it.

This causes it to be replaced outright.

Bug 617940.
2010-05-06 13:27:26 -05:00
Matthias Clasen
b440cc1546 Add a boxed type for GError
Patch by Sebastian Dröge, bug 614541
2010-04-22 20:10:56 -04:00
Javier Jardón
0f51e99565 Fix g_type_class_add_private() documentation
This fixes commit 81e2aa941b

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=614185
2010-03-29 18:17:40 +02:00
Matthias Clasen
81e2aa941b Some more doc cleanups 2010-03-26 10:11:46 -04:00
Ryan Lortie
2a209cb251 make check / makedistcheck fixes 2010-03-21 12:54:36 -05:00
Tor Lillqvist
226cc663e4 Avoid much of duplication in lists of source files
Don't keep the lists of source files for libglib, libgobject and
libgio in the VS project files in addition to the canonical location,
the corresponding Makefile.am files.

Instead, generate the corresponding .vcproj files at make dist time
using the C preprocessor, from template files called .vcprojin. We
still list explicitly in the .vcprojin files some of the
Windows-specific source files, and the sources files of gnulib and
pcre.
2010-03-21 16:15:02 +02:00
Sebastian Dröge
41383b303c Bug 612502 - Add support for class private data
This adds the two new functions g_type_add_class_private()
and g_type_class_get_private() and a convenience macro
for the getter G_TYPE_CLASS_GET_PRIVATE().
2010-03-17 15:11:00 +01:00
Stefan Kost
3d98c449b1 gsignal: improve g_signal_new docs.
Using 0 for class_offset is only a means to be able to add signal when running
out of slots in the lass structure.
2010-03-06 14:15:25 +02:00
Edward Hervey
cecf61d1c3 gobject: Don't use G_PARAM_SPEC_VALUE_TYPE when we know the pspec is valid
https://bugzilla.gnome.org/show_bug.cgi?id=605667
2010-02-23 18:42:03 +01:00
Benjamin Otte
63a6666ab7 Make g_type_interface_prerequisites() only return one instantiable type
Previously, the code had a heisenbug and could potentially return
superclasses, too. In fact, it was based on the behavior of malloc.

https://bugzilla.redhat.com/show_bug.cgi?id=554678
2010-02-17 08:55:14 +01:00
Benjamin Otte
fd3923aba2 Move offsets array from interface data member to TypeNode
We need to assign offsets when the interface is not yet instantiated.
2010-02-11 21:10:19 +01:00
Benjamin Otte
61b649cffd Move prerequisites out of _prot struct
Also fix the naming (including typo)
2010-02-11 21:10:19 +01:00
Ryan Lortie
1e655eb02c merge GVariant 2010-02-10 11:35:01 -05:00
Tor Lillqvist
154a5314be Update copyright years 2010-02-04 00:12:50 +02:00
Philip Withnall
cf0e4c33fa Don't use a compiler keyword as a variable name
Appease the MS C++ compiler by using _val instead of __value as a variable
name in G_VALUE_COLLECT_INIT.

Problem found by Haakon Sporsheim <haakon.sporsheim@gmail.com>.
Re-closes: bgo#608602
2010-02-02 10:41:00 +00:00
Philip Withnall
aa67c725e1 Fix shadowing of G_VALUE_COLLECT variables in G_VALUE_COLLECT_INIT
Closes: bgo#608602
2010-01-31 17:45:54 +00:00
Ryan Lortie
6aa73f03eb improve gitignore 2010-01-28 22:43:51 -05:00
Benjamin Otte
11d4e59712 Move the boxed private type data to TypeNode
This way we don't need to keep a custom array that we bsearch on (and
that isn't threadsafe) but can use the gtype.c machinery that is
threadsafe. And fast, too!

https://bugzilla.gnome.org/show_bug.cgi?id=554887
2010-01-25 15:30:38 +01:00
Benjamin Otte
ac666d2ae3 Put calls to registered copy/free functions into separate functions
This eases cleaning up these functions.

One optimization in value_set_internal() was lost in the process. It
shouldn't cause too many issues when all is said and done.

https://bugzilla.gnome.org/show_bug.cgi?id=554887
2010-01-25 15:30:38 +01:00
Alberto Garcia
7693b0af44 [tests] Remove C++ style comments
It makes the IBM XL C Compiler (the 'native' non-free compiler
on the AIX 5.3 and 6.1 platform) stop compiling with syntax error.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=581300

Signed-off-by: Javier Jardón <jjardon@gnome.org>
2010-01-20 18:58:32 +01:00
Benjamin Otte
914120b970 Ensure values are memset to 0 when calling G_VALUE_COLLECT_INIT()
The reason we need to enforce this is that the GTypeValueTable
documentation explicitly states that memory is memset to 0 when the
value_init function is called.

https://bugzilla.gnome.org/show_bug.cgi?id=603590
2010-01-18 14:46:55 +01:00
Alexander Larsson
820181a5de Fix docs in previous commit 2010-01-13 10:25:52 +01:00
Edward Hervey
40bf3aa5d2 gobject: Use new G_VALUE_COLLECT_INIT variant
Makes g_object_new_valist 20% to 30% faster (against 2321e5a).

Profiled against the pan newsreader which uses a variant of simple
and complex object creation.

https://bugzilla.gnome.org/show_bug.cgi?id=603590
2010-01-13 10:16:49 +01:00
Edward Hervey
0f25115ffc gsignal: Use new G_VALUE_COLLECT_INIT variant
Makes g_signal_emit_valist from 15% to 20% faster.

Results reported from profiling the pan newsreader which uses a variant
of simple and complex signal emissions (i.e no args or various args)

https://bugzilla.gnome.org/show_bug.cgi?id=603590
2010-01-13 10:16:48 +01:00
Edward Hervey
546fc0ca33 gvaluecollector: Add variant of G_VALUE_COLLECT for most used cases.
Most callers of G_VALUE_COLLECT previously had to initialize the GValue
and then G_VALUE_COLLECT would still go through a cleanup phase.

The new variant allows passing a unitialized GValue along with a GType
and speedup the initialization/collection process.

https://bugzilla.gnome.org/show_bug.cgi?id=603590
2010-01-13 10:16:46 +01:00
Alexander Larsson
94b8613b5f Use unconditional thread calls in gio and gobject
If threads are available we always enable threads in gobject, which
means all gio/gobject code can enable the unconditional thread calls.

This is a minor optimization since we avoid a bunch of unnecessary
is-threads-enabled checks.

https://bugzilla.gnome.org/show_bug.cgi?id=606775
2010-01-12 21:37:50 +01:00
Alexander Larsson
fa2bced1f3 Enable threads in g_type_init()
This means threads will be supported for all gobject libraries/applications
and initialized early enough to not cause any problems.

This solves the problem of libraries needing threadsafety. Previosly
they just called g_threads_init() anyway, which often works but sometimes
breaks in unexpected ways.

See this thread for more details:
http://mail.gnome.org/archives/gtk-devel-list/2009-November/msg00208.html

https://bugzilla.gnome.org/show_bug.cgi?id=606775
2010-01-12 21:37:29 +01:00
Kamal Mostafa
f4ccd96ea1 g_object_new(): skip varargs for simple calls
g_object_new() avoids useless varargs processing for simple calls with no
properties.  Fixes https://bugzilla.gnome.org/show_bug.cgi?id=605883
2010-01-11 15:34:41 +01:00
Haakon Sporsheim
4c55b45162 Don't do pointer arithmetics on void*
For instance MSVC doesn't like that.

Signed-off-by: Tor Lillqvist <tml@iki.fi>
2010-01-07 10:14:24 +02:00
Javier Jardón
3f5fb1ee9c [docs] Fix @title usage in "Enumeration and flags types" section 2010-01-03 23:36:44 +01:00
Pablo Castellano
0542e6dbf9 Updated .gitignore files 2010-01-03 01:24:44 +01:00
Javier Jardón
dba6cef3c9 [docs] Fix G_DEFINE_INTERFACE "Since" tag
This symbol is available since Glib 2.24, not 2.20.
2009-12-21 23:07:13 +01:00
Behdad Esfahbod
e7488ca857 [gobject] Grow gvalue transform array exponentially
Bug 589176 - Grow gvalue transform array exponentially

Reduces about 180 realloc calls during g_type_init().
2009-12-21 17:12:17 +01:00
Behdad Esfahbod
ccd33a4043 Bug 501166 - Warning message says IA__g_type_init instead of g_type_init 2009-12-19 11:46:19 +01:00