… | |
… | |
3673 | ); |
3673 | ); |
3674 | |
3674 | |
3675 | if ($self->{anim} && $self->{animspeed}) { |
3675 | if ($self->{anim} && $self->{animspeed}) { |
3676 | CFPlus::weaken (my $widget = $self); |
3676 | CFPlus::weaken (my $widget = $self); |
3677 | |
3677 | |
3678 | $widget->{animspeed} = List::Util::max 0.05, $widget->{animspeed}; |
3678 | $self->{animspeed} = List::Util::max 0.05, $self->{animspeed}; |
3679 | $widget->{anim_start} = $self->{animspeed} * int EV::now / $self->{animspeed}; |
3679 | $self->{timer} = EV::periodic_ns 0, $self->{animspeed}, undef, sub { |
3680 | $self->{timer} = EV::timer_ns 0, 0, sub { |
|
|
3681 | return unless $::CONN; |
3680 | return unless $::CONN; |
3682 | |
3681 | |
3683 | my $w = $widget |
3682 | my $w = $widget |
3684 | or return; |
3683 | or return; |
3685 | |
3684 | |
… | |
… | |
3701 | sub update_timer { |
3700 | sub update_timer { |
3702 | my ($self) = @_; |
3701 | my ($self) = @_; |
3703 | |
3702 | |
3704 | return unless $self->{timer}; |
3703 | return unless $self->{timer}; |
3705 | |
3704 | |
3706 | $self->{timer}->stop; |
|
|
3707 | if ($self->{visible}) { |
3705 | if ($self->{visible}) { |
3708 | $self->{timer}->set ( |
|
|
3709 | $self->{anim_start} |
|
|
3710 | + $self->{animspeed} |
|
|
3711 | * int 1.5 + (EV::now - $self->{anim_start}) / $self->{animspeed} |
|
|
3712 | ); |
|
|
3713 | $self->{timer}->start; |
3706 | $self->{timer}->start; |
|
|
3707 | } else { |
|
|
3708 | $self->{timer}->stop; |
3714 | } |
3709 | } |
3715 | } |
3710 | } |
3716 | |
3711 | |
3717 | sub update_face { |
3712 | sub update_face { |
3718 | my ($self) = @_; |
3713 | my ($self) = @_; |
… | |
… | |
4180 | values %{ $self->{item} }; |
4175 | values %{ $self->{item} }; |
4181 | |
4176 | |
4182 | while (my ($k, $v) = each %{ $self->{item} }) { |
4177 | while (my ($k, $v) = each %{ $self->{item} }) { |
4183 | delete $self->{item}{$k} if $v->{timeout} < $NOW; |
4178 | delete $self->{item}{$k} if $v->{timeout} < $NOW; |
4184 | } |
4179 | } |
|
|
4180 | |
|
|
4181 | $self->{timer}->set (1, 1); |
4185 | |
4182 | |
4186 | my @widgets; |
4183 | my @widgets; |
4187 | |
4184 | |
4188 | my @items = sort { |
4185 | my @items = sort { |
4189 | $a->{pri} <=> $b->{pri} |
4186 | $a->{pri} <=> $b->{pri} |