Commit Graph

34 Commits

Author SHA1 Message Date
Øyvind Kolås
04d55107f3 state: clutter_state_remove_key_internal fix memory corruption
When we free a state because there are no more keys with it as a target use a
goto to re-initialize temporary variables that have become invalid.

Fixing bug #2273
2010-08-23 14:01:08 +01:00
Emmanuele Bassi
50c5ecfe87 state: Plug some memory leakage
Thanks to Valgrind, test-state-base now reports 0 bytes definitely lost.
2010-08-13 12:12:59 +01:00
Neil Roberts
8d51617979 Conditionally use g_object_notify_by_pspec
This adds a wrapper macro to clutter-private that will use
g_object_notify_by_pspec if it's compiled against a version of GLib
that is sufficiently new. Otherwise it will notify by the property
name as before by extracting the name from the pspec. The objects can
then store a static array of GParamSpecs and notify using those as
suggested in the documentation for g_object_notify_by_pspec.

Note that the name of the variable used for storing the array of
GParamSpecs is obj_props instead of properties as used in the
documentation because some places in Clutter uses 'properties' as the
name of a local variable.

Mose of the classes in Clutter have been converted using the script in
the bug report. Some classes have not been modified even though the
script picked them up as described here:

json-generator:

 We probably don't want to modify the internal copy of JSON

behaviour-depth:
rectangle:
score:
stage-manager:

 These aren't using the separate GParamSpec* variable style.

blur-effect:
win32/device-manager:

 Don't actually define any properties even though it has the enum.

box-layout:
flow-layout:

  Have some per-child properties that don't work automatically with
  the script.

clutter-model:

  The script gets confused with ClutterModelIter

stage:

  Script gets confused because PROP_USER_RESIZE doesn't match
  "user-resizable"

test-layout:

  Don't really want to modify the tests

http://bugzilla.clutter-project.org/show_bug.cgi?id=2150
2010-08-10 17:12:06 +01:00
Emmanuele Bassi
1ca0c2a6d1 state: Return a boolean when getting the key value
Since the copy might fail, we should return a boolean value and not just
warn on the console - similarly to what ClutterAnimator does.
2010-08-08 19:17:14 +01:00
Emmanuele Bassi
fd27ca7398 Mark property strings for translation
Both the nick and the blurb fields should be translatable, for UI
builders and other introspection-based tools.
2010-07-15 14:07:07 +01:00
Øyvind Kolås
25dd0ae356 state: swap clutter_state_set_state and clutter_state_warp_to_state
Got the boolean arguments for the old clutter_state_change wrong,
making the methods do the opposite of what they should.
2010-07-12 17:34:17 +01:00
Øyvind Kolås
9e730727ca state: add clutter_state_set_state and clutter_state_warp_to_state
Replaced clutter_state_change with a boolean argument for animating the
transition or not with two separate argument-less methods.
2010-07-07 18:17:09 +01:00
Øyvind Kolås
ec05230b97 state: added clutter_state_key_get_property_type
A function to retrieve the type of the value stored in a key, the
equivalent already exists for ClutterAnimator.
2010-07-06 14:14:34 +01:00
Øyvind Kolås
6d1f697bc4 state: automatically remove unused states
When there is no further keys with a state as the target state, remove
the state (and all transitions that used this state as a target)
2010-07-06 14:14:34 +01:00
Øyvind Kolås
38941372bf state: rename property "target-state" to "state"
This reduces the amount of typing, and should provide for more readable
code for most uses of ClutterState.
2010-07-02 17:41:33 +01:00
Øyvind Kolås
b4607f7a37 state: avoid g_str_equal if a string might be NULL 2010-06-25 02:06:31 +01:00
Øyvind Kolås
1ad7eb969c state: added more documentation 2010-06-24 16:52:48 +01:00
Øyvind Kolås
2a29cd2aee state: removed special handling of state named "default"
The "default" state used for unspecified source transitions is NULL.
Small update and some other fixes to documentation.
2010-06-24 15:49:01 +01:00
Neil Roberts
e2dcd7e852 clutter-stage: Use g_array_free instead of g_array_unref
g_array_unref was only added in GLib 2.22 so we should really update
the requirements in the configure script if we want to use that
function. However the array doesn't appear to have any extra reference
taken on it anywhere so it should be safe to use g_array_free instead.
2010-06-18 16:03:07 +01:00
Øyvind Kolås
52d2e7d25d state: add a duration property
Adding a duration property to ClutterState allows the json parsing
to parse the default transition duration with the generic code paths.
2010-06-16 17:45:46 +01:00
Øyvind Kolås
351b6c0543 state: avoid walking off empty list
When removing the last key in a list, the last part of the for statement
could cause dereferencing (NULL)->next and thus segfaulting.
2010-06-16 17:45:13 +01:00
Øyvind Kolås
2cee8b648e state: consistently use clutter_state_get_state where possible
The previous commit reimplemented logic for creating states, this - and
other parts of the code should be using clutter_state_get_state.
2010-06-14 17:29:34 +01:00
Øyvind Kolås
d5c93f6d55 state: make null source state encounterd in json treated as wildcard
To be properly useful the state machine needs to be able to specify the
default transitions to a target state with no specified source state.
2010-06-14 15:49:20 +01:00
Emmanuele Bassi
b2c905ff50 Hide the marshallers
The marshallers we use for the signals are declared in a private header,
and it stands to reason that they should also be hidden in the shared
object by using the common '_' prefix. We are also using some direct
g_cclosure_marshal_* symbol from GLib, instead of consistently use the
clutter_marshal_* symbol.
2010-06-11 16:09:36 +01:00
Emmanuele Bassi
9510cbbad2 state: Minor fixes and documentation additions
Clean up the code a bit, and move common code paths into separate
function. Also, document clutter_state_set() with examples.
2010-05-26 13:43:42 +01:00
Øyvind Kolås
49a4c62319 state: fix clutter_state_change (state, "state-name", FALSE)
Properties were not being updated correctly.
2010-05-24 16:29:04 +01:00
Emmanuele Bassi
173e497ff4 state: Use Interval.compute() instead of compute_value()
Use the newly-added compute() variant to avoid creating a GValue only
for getting it copied by g_object_set_property().
2010-05-24 15:14:09 +01:00
Emmanuele Bassi
489c16c6a6 docs: Align parameter names between header and source code 2010-05-24 14:20:23 +01:00
Emmanuele Bassi
6ca425679e script: Implement State deserialization
It should be possible to describe ClutterState transitions using
ClutterScript in a similar way as ClutterAnimator.
2010-05-21 14:13:14 +01:00
Øyvind Kolås
d156550633 state: added a "target-state" property
When set the ClutterState transitions to the new state.
2010-05-21 10:37:42 +01:00
Øyvind Kolås
9c4467707f state: documented data structures 2010-05-21 10:34:13 +01:00
Emmanuele Bassi
ae3dc9bd5e state: Documentation and introspection annotation fixes 2010-05-20 18:59:22 +01:00
Emmanuele Bassi
c2abb827a3 state: Minor coding style fixes 2010-05-20 18:34:34 +01:00
Emmanuele Bassi
3f36b4a841 state: Constify StateKey accessors
Since the accessors do not modify the StateKey we should constify the
argument.
2010-05-20 17:34:36 +01:00
Emmanuele Bassi
5c74f990d6 Do not include clutter.h from a Clutter header file
Clutter header files should just include the needed headers.
2010-05-20 17:34:02 +01:00
Øyvind Kolås
1dc8c0ff05 state-machine: made clutter_state_change take a boolean animate argument
Most of the time this will be TRUE, pass FALSE to change to the target
state immediately.
2010-05-20 16:24:29 +01:00
Øyvind Kolås
54bd541270 state-machine: use clutter_timeline_get_progress 2010-05-20 16:24:29 +01:00
Øyvind Kolås
8761b279a7 state-machine: add completed signal
Added a completed signal to the animator
2010-05-20 16:24:29 +01:00
Øyvind Kolås
fcdc3a8989 state machine: added state machine 2010-05-20 16:24:29 +01:00