public
Description: GL based toolkit for creating visually impressive graphical user interfaces
Homepage: http://www.clutter-project.org
Clone URL: git://github.com/ebassi/clutter.git
Search Repo:
clutter / HACKING
100644 93 lines (61 sloc) 3.133 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
GENERAL
=======
 
General notes and rules on clutter core hacking;
 
 - GNU style indentation, please try hard to wrap at 80 chars.
 
 - All non static public API funcs should be documented in the source files
   via gtk-doc. Structures, enumerations and macros should be documented in
   the header files.
 
 - All non-trivial static and private API should be documented, especially
   the eventual lifetime handling of the arguments/return values or locking
   of mutexes.
 
 - All public functions with float parameters should also provide a fixed
   point version, with the 'x' postfix to the function name, e.g.:
   
     clutter_actor_set_foo - floating point
     clutter_actor_set_foox - fixed point
 
   Fixed point should be always be used internally, except when precision
   is paramount.
 
 - All public functions dealing with pixels should also provide a
   ClutterUnit version, with the 'u' postfix to the function name, e.g:
 
     clutter_actor_set_bar - pixels
     clutter_actor_set_baru - units
   
   ClutterUnit should always be used internally.
 
 - Properties should always be in floating point (never fixed point).
   The preferred precision is double.
 
 - Properties should use pixels whenever is possible. If sub-pixel
   precision is fundamental, use ClutterParamSpecUnit and
   clutter_param_spec_unit() to install ClutterUnit properties, and
   clutter_value_set_unit()/clutter_value_get_unit() to handle GValues in
   a safe way. Never install a ClutterUnit property using a GParamSpecInt.
 
 - Public entry points must always check their arguments with
   g_return_if_fail() or g_return_val_if_fail().
 
 - Private entry points should use g_assert() to verify internal state;
   do not use g_return_if_fail()/g_return_val_if_fail() as they might
   be compiled out.
 
 - Really try to avoid if possible additions to clutter-private.h. Use
   accessor functions instead.
 
 - Don't add direct GL calls but wrap with cogl (also adding GLES
   version if possible, or at least a stub).
 
 - Use CLUTTER_NOTE() macro for debug statements.
 
 - New features should also include an exhaustive test unit under tests.
 
RELEASES
========
 
In making a new release;
 
 - Check out a fresh copy from SVN.
 
 - Verify versioning in configure.ac, increasing relevant
   clutter_major_version/clutter_minor_version/clutter_micro_version
   value. For point releases, bump clutter_micro_version to the next
   even number.
 
 - If there was no API change (addition, removal), increment
   clutter_interface_age by one. If there was an API change,
   set clutter_interface_age to zero.
 
 - Update NEWS (New feature details, bug #'s), README (Any API changes
   relevant to developers + version), AUTHORS if relevant.
 
 - Add a Release entry to the ChangeLog noting version.
 
 - Call make distcheck and fix if fails.
 
 - Upload the tarball.
 
 - Bump clutter_micro_version to the next odd number version.
 
 - Commit.
 
 - Announce release to waiting world on blog and mailing list.
 
 - Release any dependant add-ons following similar rules to above.
   Dont forget to check *.pc file version deps!
 
$LastChangedDate$