Changeset 10585

Show
Ignore:
Timestamp:
02/07/10 06:14:07 (7 months ago)
Author:
adamk
Message:

Tidying up

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/Padre/lib/Padre/SlaveDriver.pm

    r10579 r10585  
    3838use warnings; 
    3939 
    40 our $VERSION = '0.54'; 
     40our $VERSION = '0.56'; 
    4141 
    4242# According to Wx docs, 
     
    5454# running a task. 
    5555our $TASK_START_EVENT : shared; 
     56 
     57=pod 
    5658 
    5759=head3 C<new> 
     
    7072                @_ = (); 
    7173                $SlaveDriver = bless { 
    72                         cmd_queue  => Thread::Queue->new(), 
    73                         tid_queue  => Thread::Queue->new(), 
    74                         task_queue => Thread::Queue->new(), 
     74                        cmd_queue  => Thread::Queue->new, 
     75                        tid_queue  => Thread::Queue->new, 
     76                        task_queue => Thread::Queue->new, 
    7577                } => $class; 
    76                 $SlaveDriver->_init_events(); 
     78                $SlaveDriver->_init_events; 
    7779                $SlaveDriver->{master} = threads->create( 
    7880                        \&_slave_driver_loop, 
     
    8486 
    8587        END { 
    86                 $SlaveDriver->cleanup(), undef $SlaveDriver if defined $SlaveDriver; 
     88                if ( defined $SlaveDriver ) { 
     89                        $SlaveDriver->cleanup; 
     90                        undef $SlaveDriver; 
     91                } 
    8792        } 
    8893} 
     
    9095# done late so that the full Wx has been loaded for sure 
    9196sub _init_events { 
    92         $TASK_DONE_EVENT = Wx::NewEventType() if not defined $TASK_DONE_EVENT; 
     97        $TASK_DONE_EVENT  = Wx::NewEventType() if not defined $TASK_DONE_EVENT; 
    9398        $TASK_START_EVENT = Wx::NewEventType() if not defined $TASK_START_EVENT; 
    9499} 
     100 
     101=pod 
    95102 
    96103=head2 Object methods 
     
    107114        my $task_manager = shift; 
    108115        require Storable; 
    109         $self->{cmd_queue}->enqueue(Storable::freeze([$task_manager->task_queue])); 
    110         my $tid = $self->{tid_queue}->dequeue(); 
    111         return threads->object($tid); 
    112 } 
    113  
     116        $self->{cmd_queue}->enqueue( 
     117                Storable::freeze( [ $task_manager->task_queue ] ) 
     118        ); 
     119        return threads->object( 
     120                $self->{tid_queue}->dequeue 
     121        ); 
     122} 
     123 
     124=pod 
    114125 
    115126=head3 task_queue 
     
    125136 
    126137sub task_queue { 
    127         my $self = shift; 
    128         return $self->{task_queue}; 
    129 } 
     138        $_[0]->{task_queue}; 
     139} 
     140 
     141=pod 
    130142 
    131143=head3 cleanup 
     
    150162 
    151163sub DESTROY { 
    152         my $self = shift; 
    153         $self->cleanup(); 
     164        $_[0]->cleanup; 
    154165} 
    155166 
     
    157168# Worker thread main loop 
    158169sub _worker_loop { 
    159         my ( $queue ) = @_; @_ = (); # hack to avoid "Scalars leaked" 
     170        my ( $queue ) = @_; 
     171        @_ = (); # hack to avoid "Scalars leaked" 
     172 
    160173        require Storable; 
    161174        require Padre::TaskManager; 
     
    195208} 
    196209 
    197  
    198210sub _slave_driver_loop { 
    199         my ( $inqueue, $outqueue ) = @_; @_ = (); # hack to avoid "Scalars leaked" 
     211        my ( $inqueue, $outqueue ) = @_; 
     212        @_ = (); # hack to avoid "Scalars leaked" 
    200213 
    201214        while ( my $args = $inqueue->dequeue ) { # args is frozen [$main, $queue] 
    202215                last if $args eq 'STOP'; 
    203                  
    204216                my $task_queue = Padre::SlaveDriver->new->task_queue; 
    205217                my $worker_thread = threads->create(\&_worker_loop, $task_queue); 
    206                 my $tid = $worker_thread->tid(); 
     218                my $tid = $worker_thread->tid; 
    207219                $outqueue->enqueue($tid); 
    208220        }