3318 Commits

Author SHA1 Message Date
Damien Lespiau
beec9743eb gmain: Add Since: 2.28 tag to g_source_{add,remove}_child_source
New API should have gtk-doc tags to document the version it was
introduced.

Signed-off-by: Javier Jardón <jjardon@gnome.org>
2010-12-01 01:12:32 +01:00
Matthias Clasen
02978fff17 Update NEWS 2010-11-29 01:16:02 -05:00
Christian Persch
d19e1a2c3c Use same variable names in .h and .c 2010-11-27 12:47:36 +01:00
Dan Winship
d15cdbefec gmain: add g_source_add_child_source and g_source_remove_child_source
This adds "child source" support to GSource. A child source behaves
basically like a GPollFD; when you add a source to a context, all of
its child sources are added with the same priority; when you destroy a
source, all of its child sources are destroyed; and when a child
source triggers, its parent source's dispatch function is run.

Use cases include:

    - adding a GTimeoutSource to another source to cause the source to
      automatically trigger after a certain timeout.

    - wrapping an existing source type with a new type that has
      a different callback signature

    - creating a source that triggers based on different conditions
      at different times.

https://bugzilla.gnome.org/show_bug.cgi?id=634239
2010-11-26 15:07:28 -05:00
Dan Winship
ece936e84d gmain: fix some silly code in a programmer-error case
Previously if a source got finalized while still attached to a
context, it would warn and re-ref the source. But then it just freed
it anyway... So keep the warning but drop the re-ref.

https://bugzilla.gnome.org/show_bug.cgi?id=634239
2010-11-26 15:07:28 -05:00
Dan Winship
b358202856 gmain: move finalization of GSource outside of context lock
This avoids ugly deadlock situations such as in
https://bugzilla.gnome.org/show_bug.cgi?id=586432

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

https://bugzilla.gnome.org/show_bug.cgi?id=634239
2010-11-26 15:07:28 -05:00
Owen W. Taylor
a70ba9c8b1 Fix off-by-1000 for GTimer
Divide monotonic time by 1e6 not 1e9 to get seconds.
2010-11-21 22:01:52 -05:00
Ryan Lortie
354d655ba8 g_str_hash: switch to using DJB hash
This is the same as what we were already doing with 2 changes:

  - use an initial value of 5381 instead of 0

  - multiply by 33 in each round instead of 31
2010-11-17 12:24:53 -05:00
Ryan Lortie
f50a99e782 g_str_hash: clean up code
Un-unroll the first iteration.

No functional changes here.
2010-11-17 12:24:53 -05:00
Chun-wei Fan
029f3070e7 gtimer.c: Revert accidental overwrite
Revert accidental overwrite as timing API was changed from 2.27.2 to 2.27.3
2010-11-09 20:32:39 +08:00
Chun-wei Fan
9806040455 Added and Moved checks for includes
Moved checks for G_OS_WIN32 after GLib header includes and added other checks
required for Windows/MSVC builds
2010-11-09 09:53:12 +08:00
Dan Winship
791d91a957 fix make check 2010-11-07 12:56:08 -05:00
Ryan Lortie
ba9fccf71e g_get_user_runtime_dir(): New function
Get the value of the XDG_RUNTIME_DIR environment variable.
2010-11-06 17:35:10 -04:00
Christian Persch
fa774618fc Fix docs comment typo 2010-11-06 12:27:01 +01:00
Ryan Lortie
7fc6f8a159 Add g_variant_lookup() and tests
Convenience API for doing lookups in dictionaries where the key is a
string or object path.
2010-11-05 21:33:43 -04:00
Tor Lillqvist
0940828418 Clarify docs for g_path_is_absolute() semantics on Windows 2010-11-04 22:18:42 +02:00
Ryan Lortie
e4ad3442c0 GMainContext: store real time as int64 2010-11-02 22:39:09 -04:00
Ryan Lortie
5dab4727ee Add g_get_real_time() for wall-clock int64 micros
Similar in spirit to g_get_monotonic_time().
2010-11-02 22:39:09 -04:00
Ryan Lortie
38e7aa9855 Clean up g_usleep()
Remove some code that was written in 2000 to support OSes that do not
have nanosleep().  nanosleep() has been specified (in POSIX-1.2001) for
almost a decade now, so assume we have it (except on Windows).

Remove the checks for nanosleep and nsleep from configure.ac.

We're removing this code because we honestly believe that nobody will be
affected.  If this change negatively impacts you, please file a bug.
2010-11-02 22:39:09 -04:00
Ryan Lortie
a48faa0aed GTimer: switch to monotonic time
and remove docs notes about threads having to be initialised.
2010-11-02 22:39:09 -04:00
Ryan Lortie
92df8a1d77 Drop GTimeSpec type 2010-11-02 22:39:09 -04:00
Ryan Lortie
c3a0d32ef1 Switch GTimeSpec users to int64 microseconds
glib is trying to move toward using microseconds-in-gint64 as its
universal time format.

No real API breaks here since GTimeSpec is new this unstable release
series.
2010-11-02 22:39:09 -04:00
Ryan Lortie
d9f5ab56c3 GTimeout: simplify math for 'seconds' case
The code was designed to deal with any granularity of timer and due to
the use of GTimeVal/GTimeSpec, the math for this gets extremely
confusing.

From a practical standpoint, we only ever have a granularity of seconds.

Take advantage of that fact in the code and vastly simplify the math.
2010-11-02 22:39:09 -04:00
Matthias Clasen
d2612ad955 Fix a doc typo 2010-10-31 23:13:36 -04:00
Christian Persch
ab02965c50 Use G_GINT64_CONSTANT here
Bug #631482.
2010-10-30 21:40:28 -04:00
Ryan Lortie
99d2c2eef5 Add testcase for environment functions 2010-10-28 22:20:56 -04:00
Ryan Lortie
29ce7385bb Add g_get_environ(): portable access to 'environ'
Return a copy of 'environ' on platforms where that is possible, or do
something else on other platforms.
2010-10-28 22:20:56 -04:00
Ryan Lortie
7c184df292 Bug 158725 - free linked list with data
Add some helpers for freeing a linked list along with its elements by
providing a GDestroyNotify to call on each of them.

Add a test.

Based on a patch from Cosimo Cecchi.
2010-10-28 11:20:57 -04:00
Ryan Lortie
2af4b6e544 Deprecate g_source_get_current_time() 2010-10-27 09:22:13 -04:00
Ryan Lortie
91113a8aee switch GTimeoutSource to use monotonic time 2010-10-27 09:22:12 -04:00
Ryan Lortie
b7d8363fbe Add g_source_get_time()
Cached version of g_get_monotonic_time() that does similar to what
g_source_get_current_time() does for g_get_current_time().
2010-10-27 09:22:12 -04:00
Ryan Lortie
bf941f200c Rename time_is_current to current_time_is_fresh
Internal structure field; no semantic changes.
2010-10-27 09:22:12 -04:00
Ryan Lortie
ab548d240a Add g_get_monotonic_time()
Gets the system monotonic time on systems that have it.  Otherwise, call
g_get_current_time().
2010-10-27 09:22:12 -04:00
Ryan Lortie
ac82e74895 Add 'GTimeSpec' as 'struct timespec' equivalent 2010-10-27 09:22:12 -04:00
Ryan Lortie
817b322ca7 Link libglib against -lrt if we have clock_gettime 2010-10-27 09:22:12 -04:00
Ryan Lortie
181982c47c GVariant: avoid locking in a common case
Avoid acquiring the lock on the instance on the case of deserialising a
child.  We know that it is safe to do this unlocked because a serialised
child will never become unserialised.

Closes #626320
2010-10-26 11:49:32 -04:00
Tor Lillqvist
9d80c36141 Use CSIDL_LOCAL_APPDATA on Windows
Make g_get_user_data_dir() return the CSIDL_LOCAL_APPDATA folder on
Windows, and not CSIDL_PERSONAL. On Windows 7, that corresponds to the
subfolders AppData\Local vs. Documents under the profile ("home")
folder. This matches what Qt does, for instance, and has been widely
requested.

Also make g_get_user_config_dir() return this and not the (roaming)
CSIDL_APPDATA folder. The reason for this change is that it would be
surprising and hard to justify if g_get_user_data_dir() returned the
local application data folder while g_get_user_config_dir() would
return the roaming one. Nothing in the function names or the XDG specs
suggests that any roaming vs. local dichotomy would be involved.

Document the new semantics and the fact that these two functions now
return the same directory on Windows.

Note that in reality, code that really truly wants to support Windows
as well as possible probably will not use these GLib functions anyway,
but Win32 APIs directly to be sure what it is doing...

Should hopefully satisfy complaints in bug #620710 and related bugs.
2010-10-18 14:43:21 +03:00
Ryan Lortie
a7662ef315 GVariant tests: fix bad allignment assumption
One of the GVariant test cases allocates a pair of character arrays on
the stack and then passes them to functions that assume that they will
be aligned to a multiple of two.

This is not the case for some versions of GCC (4.0.3 on PowerPC).
2010-10-05 02:11:22 -04:00
Ryan Lortie
2ce2d587ed GVariant: avoid byteswapping in some cases
Make g_variant_byteswap() merely return a new reference on the given
value in the event that we know that byteswapping will have no effect
(ie: types which have no alignment requirement).

This fixes a somewhat complicated interaction between GVariant,
GSettings and GVDB on big endian machines:  GSettings assumes that it
can unref values returned from GVDB without losing access to the
underlying data.  This only works if the underlying data is in the
mapped file -- not a freshly-allocated buffer that GVariant byteswapped
into.
2010-10-03 22:55:39 -04:00
Ryan Lortie
92974b80fc Bug 618737 - "dispatch to context" functionality
Adds a new function g_main_context_invoke() (and _full() variant).

This function takes a main context, a function and a user_data.  If the
main context is already acquired in the current thread, the function is
invoked directly.  If the main context is the default main context of
the current thread and it can be acquired then the function is invoked
directly while the context is owned.  Otherwise, the function is
scheduled as an idle on the context.
2010-10-03 17:34:16 -04:00
Ryan Lortie
fff6814973 Bug 630077 - GDateTime week number support
Fully implement support for ISO 8601 week dates in GDateTime and
document that this is the case.

Add an exhaustive test case to ensure correctness.
2010-10-01 11:20:55 -04:00
Ryan Lortie
1a0dbff236 clean up g_date_time_get_week_day()
No functionality changes here.

Vastly simplify the algorithm for calculating the day of the week.

Fix the documentation (which is incorrectly stating that 1 means
Sunday) and clarify that the number we return is in line with ISO 8601
week day numbering.
2010-09-26 18:53:28 -04:00
Ryan Lortie
02451227ec fix argument order for g_date_time_difference()
The names of the arguments in the header file was reversed.

Closes bug #630000
2010-09-22 06:30:54 -04:00
Philip Withnall
60def049d9 Bug 630185 — Allow NULL strings in g_quark_try_string()
Allow NULL strings to be passed to g_quark_try_string(), returning a 0 quark
in that case, as per the existing documentation. Closes: bgo#630185
2010-09-21 10:35:36 +01:00
Behdad Esfahbod
f1f7e771d7 Fix typo 2010-09-20 22:51:26 -04:00
Colin Walters
291545b6ee gdir: Clarify in documentation that ordering is not defined 2010-09-20 13:25:24 -04:00
Ryan Lortie
cec629972b GDateTime: G_GNUC_WARN_UNUSED_RESULT for modifiers
Emmanuele suggested adding G_GNUC_WARN_UNUSED_RESULT to all of the
g_date_time_add_* functions to help deal with the situation where people
may mistakenly believe that these functions are inplace modifiers.
2010-09-18 16:31:00 -04:00
Ryan Lortie
ac05f990db Fix header cleaup fallout when using system pcre
Using the internal pcre has the side effect of exposing gregex.c to
glib.h.  When we use the system one, we lose that, so we need to
explicitly include the things we use (glist, gatomic, etc..)
2010-09-18 12:52:58 -04:00
Ryan Lortie
6393ffa3a6 GDateTime: fix a test that fails from time to time
The test fails if it's a different date in the time zone of the machine
running the test than it currently is in UTC.
2010-09-18 01:20:22 +03:00
Ryan Lortie
cf73ba47f1 Deal with gtk-doc's insane sensitivty to spaces
...by inserting a few of them.
2010-09-17 13:14:59 -04:00