On Thu, 31 Jan 2008 21:20:18 +0000, Emmanuele Bassi <[EMAIL PROTECTED]> wrote:
> for future reference, just open a bug in bugzilla: it's easier to attach
> patches and track the discussion for us. :-)

Yes, sorry for that, but working on clutter is a personnal project, but I'm 
doing this from my workplace as I don't have Internet access elsewhere, and I'm 
concerned about intellectual property problems (theorically, I'm not allowed to 
do this). So I didn't want to do too much fuss on this.

> On Thu, 2008-01-31 at 20:28 +0100, benoar wrote:
> 
>> A timeline has a current_frame_num variable which tells the current
>> frame number. To me, it should be included in the interval
>> [0,n_frames-1], do you agree ?
> 
> for "historical reasons", we defined the interval of a timeline to be
> [0, n_frames]. since both explicit animations and implicit animations
> depend on this interval, I think it's a bit too late to change it and
> expect everything to work. all the alpha functions, for instance, would
> have to be changed to take into account the new interval.

OK, I understand that the historical wieght may be too heavy. Even if one would 
say "it's never too late" ;-)

>>  Because a lot of tests in clutter-timeline.c let this variable go to
>> n_frames. Most of the test are on "current_frame_num > n_frames",
>> which is wrong if you don't want current_frame_num to be equal to
>> n_frames.
> 
> !(current_frame_num > n_frames) will evaluate as FALSE if the user or
> the timeline itself try to set the frame number to something that's
> bigger than the number of frames - which is pretty consistent with the
> interval as it has been defined (that is, [0, n_frames]).

OK, I realize this is concistent with how you think it.

>> It is strange that this kind of error has not be spotted earlier, so
>> maybe these particular tests were intentional. But the convention in C
>> is for the "indexes" to be from 0 to max_count-1, isn't it ?
> 
> a timeline is not an array index, though. :-) every check you mentioned
> is consistent to the given range.

OK, so what is the "meaning" of the "current frame number" ?

I am just trying to find out what this means exactly, because I am building a 
clutter "toy" to try manipulating clutter objects, and look at what one can get 
when playing with them (I'm doing this in Python). As I want to display a 
progress bar for the timeline, I'd like to know from where to where the current 
frame number goes. And to me, when you say n_frames=10, you mean that you want 
10 frames, not 11 ! (if current_frame_num goes from 0 to 10)

I spotted this bug as I thought the max frame # would be n_frames-1, and I got 
something over 100% when playing a timeline. But I didn't get it when the 
timeline loops !! This seemed to me very inconsistent.
By looking a bit closer to the code, I see that when a timeline hits the 
n_frames'th frame, thus looping, it immediatly rewind itself. As I was polling 
the timeline value on a periodic basis (I didn't use the "new frame" signal as 
it would be a bit heavy displaying every frame change at high FPS rate), I 
never saw a looping timeline hit n_frames.

Well, then, I wanted to add a rant to how this way of couting frames looks 
weird on clutter_ramp_func for example (think to the "if (current_frame_num > 
(n_frames / 2))" test when n_frames=4 and the timeline loops : you get 3 frames 
for the increasing part, and 1 for the decreasing one ...), but when I think to 
it, the way you do it looks a lot like current_frame_num=n_frames doesn't 
really exist, and it is quite concistent with my view of the [0,n_frames-1] 
interval. And for the clutter_ramp_func, the decreasing frame will be equal to 
the second incresing frame ("middle" value for the ramp), and the hypothetic 
n_frames' frame would be 0, which is the same result as frame 0. So this is 
consistent.

Sorry if this message is a bit confusing, but I was a bit confused when writing 
it, but now I understand better. One could say the when 
current_frame_num=n_frames, it's almost the same as being on frame 0. The only 
strange thing you get is that for an increasing ramp for example, if you loop, 
you will never hit n_frames, and so, never hit alpha's maximum. I don't know if 
it is a serious issue or not, but you may consider checking a bit further how 
the alpha functions reacts to this.

>> PS: I also spotted another bug, a double increment, line 782: it should
> be removed:
>>   priv->current_frame_num += n_frames;
> 
> yes, that's truly a typo. well spotted! I've just fixed it in SVN.

Thanks.

Cheers,
Benjamin

-- 
To unsubscribe send a mail to [EMAIL PROTECTED]

Reply via email to