mirror of
https://github.com/brl/mutter.git
synced 2024-11-23 00:20:42 -05:00
e470fd7d82
Currently, only clutter_model_iter_set_valist() is in charge of emitting the ClutterModel::row-changed signal. Both the set() and the set_valist() functions can be called with multiple columns, so we coalesce the signal emission at the end of the set_valist(), to have a single ::row-changed emission per change. The clutter_model_iter_set_value() function is just a thin wrapper around the set_value() virtual function, but since it's called internally we cannot add the signal emission there as well, as we'd break the signal coalescing. For this reason, we need some code refactoring inside the various set() variants of ClutterModelIter: - we only use the internal va_arg variant for both the set() and set_valist() public functions, to avoid multiple type checks; - the internal set_valist() calls an internal set_value() method which calls the virtual function from the iterator vtable; - a new internal emit_row_changed() method is needed to retrieve the ClutterModel from the iterator, and emit the signal; Now, all three variants of the value setter will call an internal ClutterModelIter::set_value() wrapper, and emit the ::row-changed signal. To check that the intended behaviour has been implemented, and it's not going to be broken, the test suite has grown a new unit which populates a model and changes a random row. |
||
---|---|---|
.. | ||
accessibility | ||
conform | ||
data | ||
interactive | ||
micro-bench | ||
performance | ||
Makefile.am | ||
README |
Outline of test categories: The conform/ tests should be non-interactive unit-tests that verify a single feature is behaving as documented. See conform/ADDING_NEW_TESTS for more details. The performance/ tests are performance tests, both focused tests testing single metrics and larger tests. These tests are used to report one or more performance markers for the build of Clutter. Each performance marker is picked up from the standard output of running the tests from strings having the form "\n@ marker-name: 42.23" where 'marker-name' and '42.23' are the key/value pairs of a single metric. Each test can provide multiple key/value pairs. Note that if framerate is the feedback metric the test should forcibly enable FPS debugging itself. The file test-common.h contains utility function helping to do fps reporting. The interactive/ tests are any tests whose status can not be determined without a user looking at some visual output, or providing some manual input etc. This covers most of the original Clutter tests. Ideally some of these tests will be migrated into the conformance/ directory so they can be used in automated nightly tests. The accessibility/ tests are tests created to test the accessibility support of clutter, testing some of the atk interfaces. The data/ directory contains optional data (like images and ClutterScript definitions) that can be referenced by a test. Other notes: • All tests should ideally include a detailed description in the source explaining exactly what the test is for, how the test was designed to work, and possibly a rationale for the approach taken for testing. • When running tests under Valgrind, you should follow the instructions available here: http://live.gnome.org/Valgrind and also use the suppression file available inside the data/ directory.