Commit Graph

16 Commits

Author SHA1 Message Date
Emmanuele Bassi
d3d29b194e 2008-09-23 Emmanuele Bassi <ebassi@linux.intel.com>
* clutter/clutter-timeout-pool.c: Reword previous commit.
2008-09-23 13:25:31 +00:00
Emmanuele Bassi
b3726e4d66 2008-09-23 Emmanuele Bassi <ebassi@linux.intel.com>
* clutter/clutter-timeout-pool.c:
	(clutter_timeout_pool_new): Fix previous commit: g_source_unref()
	is not needed. (Thanks to Neil Roberts)
2008-09-23 12:58:31 +00:00
Emmanuele Bassi
9ddfe73b39 2008-09-23 Emmanuele Bassi <ebassi@linux.intel.com>
Bug 1154 - clutter_timeout_pool_new() documentation doesn't say
	how to free

	* clutter/clutter-timeout-pool.c: Update the documentation to
	note that you must use g_source_unref() to free the timeout
	pool. (Murray Cumming)
2008-09-23 12:23:05 +00:00
Neil Roberts
827c26757e Applied patch from bug #881
* clutter/clutter-frame-source.h: 
	* clutter/clutter-frame-source.c:
	New files that contain a replacement for g_timeout that try to
	cope with system delays.

	* clutter/Makefile.am: Added clutter-frame-source.{c,h}

	* clutter/clutter-timeline.c (timeout_add): Use a frame source
	instead of a g_timeout.

	* clutter/clutter-main.c (clutter_threads_add_frame_source_full)
	(clutter_threads_add_frame_source): New public functions to wrap a
	frame source and grab the Clutter mutex.

	* clutter/clutter-timeout-pool.c: Now calculates the timeout
	expiration times in the same way as a frame source does so that it
	counts time in frame intervals instead of setting the next
	expiration time as an offset from the current time.
2008-04-17 16:50:23 +00:00
Tomas Frydrych
abd6832dd9 2007-10-12 Tomas Frydrych <tf@o-hand.com>
* clutter/clutter-actor.c:
        * clutter/clutter-backend.c:
        * clutter/clutter-behaviour-depth.c:
        * clutter/clutter-box.c:
        * clutter/clutter-clone-texture.c:
        * clutter/clutter-container.c:
        * clutter/clutter-entry.c:
        * clutter/clutter-feature.c:
        * clutter/clutter-fixed.c:
        * clutter/clutter-group.c:
        * clutter/clutter-hbox.c:
        * clutter/clutter-label.c:
        * clutter/clutter-layout.c:
        * clutter/clutter-media.c:
        * clutter/clutter-rectangle.c:
        * clutter/clutter-score.c:
        * clutter/clutter-script.c:
        * clutter/clutter-stage.c:
        * clutter/clutter-texture.c:
        * clutter/clutter-timeline.c:
        * clutter/clutter-timeout-pool.c:
        * clutter/clutter-vbox.c:
        * clutter/cogl/gl/cogl.c:
        * clutter/cogl/gles/cogl.c:
        * clutter/eglnative/clutter-backend-egl.c:
        * clutter/eglnative/clutter-event-egl.c:
        * clutter/eglnative/clutter-stage-egl.c:
        * clutter/eglx/clutter-backend-egl.c:
        * clutter/eglx/clutter-event-egl.c:
        * clutter/eglx/clutter-stage-egl.c:
        * clutter/glx/clutter-event-glx.c:
        * clutter/json/json-array.c:
        * clutter/json/json-generator.c:
        * clutter/json/json-node.c:
        * clutter/json/json-object.c:
        * clutter/json/json-parser.c:
        * clutter/sdl/clutter-backend-sdl.c:
        * clutter/sdl/clutter-event-sdl.c:
        * clutter/sdl/clutter-stage-sdl.c:

	Fixedup config.h inclusion (must always be bracketed with #ifdef
	HAVE_CONFIG_H).
2007-10-12 08:17:00 +00:00
Emmanuele Bassi
1a6deea7a7 Use g_list_insert_sorted() instead of our custom function
The clutter_timeout_pool_insert_sorted() function caused an inversion of
the timeout sources in the pool; this led to a wrong behaviour in the
execution of the timeout functions. See bug 471.

This patch drops clutter_timeout_pool_insert_sorted() in favour of the
standard g_list_insert_sorted(), which produces identical behaviours with
and without the pool.

A new test, written by Rob Bradford, has been added to the regression test
suite in order to identify sorting issues with the timeout pools.
2007-08-19 17:06:22 +00:00
Emmanuele Bassi
68bbe4cd89 2007-08-12 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-timeout-pool.c: Fix removing and adding timeouts
	to the timeout pool during a dispatch of a timeout source already
	inside the pool. (#456, based on a patch by Neil Roberts)

	(clutter_timeout_dispatch), (clutter_timeout_pool_dispatch): Hold
	the main Clutter lock in the pool dispatch function, instead of
	the per-timeout dispatch; this guarantees that the ref+unref of
	the single timeouts are done under the main lock.
2007-08-12 13:19:31 +00:00
Emmanuele Bassi
fae203c1ea 2007-08-08 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-timeout-pool.c: Fix sorting of the pool
	when inserting and removing timeout sources. (#449, Neil
	Roberts)
2007-08-08 21:36:16 +00:00
Emmanuele Bassi
4befcd0a64 Merge clutter.git/threading branch 2007-08-08 10:20:14 +00:00
Emmanuele Bassi
e49b05049a Allow disabling the timeline pool via environment variables
All the ClutterTimeline share a ClutterTimeoutPool by default. This might
cause problems if an application is using a heavily threaded library that
does not play nicely with the main loop (like libneon). If this is the
case, using the CLUTTER_TIMELINE environment variable set to "no-pool"
makes the ClutterTimeline objects discard the pool and allocate a slice
of the main loop.
2007-06-21 14:19:56 +00:00
Emmanuele Bassi
7d18616cfa Remove locking from ClutterTimeoutPool
The mutex protection for the timeout pool was causing deadlocks, so it has been
removed for the time being, until I figure out a way to make it work properly.
A timeout pool should not be considered thread-safe (or thread-aware) until further
notice.
2007-06-14 19:57:36 +00:00
Emmanuele Bassi
ba0fa9d4be 2007-06-14 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-timeout-pool.c: Make ClutterTimeoutPool
	more thread-safe, using a static lock.

	(clutter_timeout_pool_dispatch), (clutter_timeout_pool_remove): Fix
	a race condition-turned-in-memory corruption bug, triggered by
	removing a timeout from the pool while still spinning the pool
	source.
2007-06-14 12:00:31 +00:00
Emmanuele Bassi
a633e922b1 Compilation fixes 2007-06-09 13:20:22 +00:00
Emmanuele Bassi
d41a60a371 Document ClutterTimeoutPool
Add ClutterTimeoutPool API documentation to the source and to the
gtk-doc sections.
2007-06-09 13:20:13 +00:00
Emmanuele Bassi
787ddc3122 Add copyright license and make ClutterTimeoutPool public
ClutterTimeoutPool can be useful for manually animating without using
timelines or behaviours.
2007-06-09 13:20:06 +00:00
Emmanuele Bassi
7f4b6b9c0e Add timeout pool source
A ClutterTimeoutPool is a source for the GLib main loop which pools
multiple timeout functions. The pool is always sorted so that the first
timeout to expire is also the first element of the pool; hence, extraction
is a constant time operation. This also makes the usage of multiple
timeouts at the same priority not compete for a timeslice of the main
loop, leading to starvation.
2007-06-09 13:19:52 +00:00