Author: pebender
Date: Wed Sep  3 19:10:28 2008
New Revision: 3695

Modified:
     
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/usr/bin/mm_game_exit
    trunk/gar-minimyth/script/perl/perl-MiniMyth/checksums
    trunk/gar-minimyth/script/perl/perl-MiniMyth/files/MiniMyth.pm

Log:
- Changed arguments and return value of MiniMyth::x_applications_* methods.



Modified:  
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/usr/bin/mm_game_exit
==============================================================================
---  
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/usr/bin/mm_game_exit
         
(original)
+++  
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/usr/bin/mm_game_exit
         
Wed Sep  3 19:10:28 2008
@@ -7,7 +7,7 @@

  my $minimyth = new MiniMyth;

-$minimyth->x_applications_exit({ ':game' => 1 });
+$minimyth->x_applications_exit(':game');

  $minimyth->application_stop('mm_ss_suspend');


Modified: trunk/gar-minimyth/script/perl/perl-MiniMyth/checksums
==============================================================================
--- trunk/gar-minimyth/script/perl/perl-MiniMyth/checksums      (original)
+++ trunk/gar-minimyth/script/perl/perl-MiniMyth/checksums      Wed Sep  3  
19:10:28 2008
@@ -1 +1 @@
-496f93cd5248f48ef150cf489f800dcd  download/MiniMyth.pm
+17fa8cc22f66aa142c2ce77209002e86  download/MiniMyth.pm

Modified: trunk/gar-minimyth/script/perl/perl-MiniMyth/files/MiniMyth.pm
==============================================================================
--- trunk/gar-minimyth/script/perl/perl-MiniMyth/files/MiniMyth.pm       
(original)
+++ trunk/gar-minimyth/script/perl/perl-MiniMyth/files/MiniMyth.pm      Wed Sep 
  
3 19:10:28 2008
@@ -62,22 +62,38 @@
      return $path;
  }

-sub application_running
+sub application_pids
  {
      my $self        = shift;
      my $application = shift;

-    my $running = 0;
+    my @pids = ();
      if (open(FILE, '-|', "/bin/pidof $application"))
      {
          while (<FILE>)
          {
-            $running = 1;
-            last;
+            chomp;
+            push(@pids, split(/ +/, $_));
          }
          close(FILE);
      }

+    return [EMAIL PROTECTED];
+}
+
+sub application_running
+{
+    my $self        = shift;
+    my $application = shift;
+
+    my @pids = @{$self->application_pids($application)};
+
+    my $running = 0;
+    if (@pids)
+    {
+        $running = 1;
+    }
+
      return $running;
  }

@@ -87,20 +103,16 @@
      my $application = shift;
      my $message     = shift;

-    my $message_show = ((defined($message)) && ($message ne '')) ? 1 : 0;
+    my @pids = @{$self->application_pids($application)};

-    if (open(FILE, '-|', "/bin/pidof $application"))
+    if ((defined($message)) && ($message) && (@pids))
      {
-        if ($message_show)
-        {
-            $self->message_output('info', $message);
-            $message_show = 0;
-        }
-        while (<FILE>)
-        {
-            system(qq(/bin/kill $_));
-        }
-        close(FILE);
+        $self->message_output('info', $message);
+    }
+
+    foreach (@pids)
+    {
+        system(qq(/bin/kill $_));
      }

      return 1;
@@ -2063,59 +2075,40 @@
  sub x_applications_list
  {
      my $self         = shift;
-    my $applications = shift;
+    my @applications = @_;

-    # Convert application groups to application names.
-    if ($applications->{':everything'})
-    {
-        $applications->{':browser'} = 1;
-        $applications->{':game'} = 1;
-        $applications->{':player'} = 1;
-        $applications->{':terminal'} = 1;
-        delete $applications->{':everything'};
-    }
-    if ($applications->{':browser'})
-    {
-        $applications->{'mythbrowswer'} = 1;
-        delete $applications->{':browser'};
-    }
-    if ($applications->{':game'})
-    {
-        $applications->{'fceu'} = 1;
-        $applications->{'jzintv'} = 1;
-        $applications->{'mame'} = 1;
-        $applications->{'mess'} = 1;
-        $applications->{'mednafen'} = 1;
-        $applications->{'stella'} = 1;
-        $applications->{'VisualBoyAdvance'} = 1;
-        $applications->{'zsnes'} = 1;
-        delete $applications->{':game'};
-    }
-    if ($applications->{':player'})
-    {
-        $applications->{'mplayer'} = 1;
-        $applications->{'mplayer-svn'} = 1;
-        $applications->{'mythtv'} = 1;
-        $applications->{'vlc'} = 1;
-        $applications->{'xine'} = 1;
-        delete $applications->{':player'};
-    }
-    if ($applications->{':terminal'})
+    my @browser    = ( 'mythbrowswer');
+    my @game       =  
( 'fceu', 'mame', 'mess', 'mednafen', 'stella', 'VisualBoyAdvance', 'zsnes');
+    my @player     =  
( 'mplayer', 'mplayer-stable', 'mplayer-svn', 'mythtv', 'vlc', 'xine' );
+    my @terminal   = ( 'rxvt' );
+    my @everything = ( @browser, @game, @player, @terminal );
+
+    my @expanded = ();
+
+    # Expand application groups to application names.
+    foreach (@applications)
      {
-        $applications->{'rxvt'} = 1;
-        delete $applications->{':terminal'};
+        given ($_)
+        {
+            when(/^:browser$/)    { push(@expanded, @browser);    }
+            when(/^:game$/)       { push(@expanded, @game);       }
+            when(/^:player$/)     { push(@expanded, @player);     }
+            when(/^:terminal$/)   { push(@expanded, @terminal);   }
+            when(/^:everything$/) { push(@expanded, @everything); }
+            default               { push(@expanded, $_);          }
+        }
      }

-    return $applications;
+    return @expanded;
  }

  # Exit all applications in the list, assuming that we know how.
  sub x_applications_exit
  {
      my $self         = shift;
-    my $applications = $self->x_applications_list(shift);
+    my @applications = $self->x_applications_list(@_);

-    foreach my $application (keys %{$applications})
+    foreach my $application (@applications)
      {
          if ($self->application_running($application))
          {
@@ -2143,6 +2136,7 @@
                  when (/^mythbrowser$/)      { push(@xmacro, 'KeyStr  
Escape'); }
                  # Players
                  when (/^mplayer$/)          { push(@xmacro, 'KeyStr  
Escape'); }
+                when (/^mplayer-stable$/)   { push(@xmacro, 'KeyStr  
Escape'); }
                  when (/^mplayer-svn$/)      { push(@xmacro, 'KeyStr  
Escape'); }
                  when (/^mythtv$/)           { push(@xmacro, 'KeyStr  
Escape'); }
  # Does not work because the window name is not 'vlc'.
@@ -2185,9 +2179,9 @@
  sub x_applications_kill
  {
      my $self         = shift;
-    my $applications = $self->x_applications_list(shift);
+    my @applications = $self->x_applications_list(@_);

-    foreach my $application (keys %{$applications})
+    foreach my $application (@applications)
      {
          if (open(FILE, '-|', "/bin/pidof $application"))
          {
@@ -2207,13 +2201,13 @@
  sub x_applications_dead
  {
      my $self         = shift;
-    my $applications = $self->x_applications_list(shift);
+    my @applications = $self->x_applications_list(@_);

      my $dead = 0;
      while ($dead == 0)
      {
          $dead = 1;
-        foreach (keys %{$applications})
+        foreach (@applications)
          {
              if ($self->application_running($_))
              {
@@ -2327,23 +2321,22 @@
      # Create the list of X applications that may have been started by  
xinit but are not keeping X alive,
      # then them and wait for them to die.
      {
-        my %applications = ();
+        my $myth_program = $self->var_get('MM_X_MYTH_PROGRAM');
          # Create a list of all applications that xinit might start.
-        $applications{$self->var_get('MM_X_MYTH_PROGRAM')} = 1;
-        $applications{'mythfrontend'} = 1;
-        $applications{'mythwelcome'} = 1;
-        $applications{'ratpoison'} = 1;
-        $applications{'X'} = 1;
-        $applications{'x11vnc'} = 1;
-        $applications{'xinit'} = 1;
-        $applications{'xscreensaver'} = 1;
+        my @applications = ();
+        push(@applications, $myth_program);
+        push(@applications, 'mythfrontend');
+        push(@applications, 'mythwelcome');
+        push(@applications, 'ratpoison');
+        push(@applications, 'X');
+        push(@applications, 'x11vnc');
+        push(@applications, 'xinit');
+        push(@applications, 'xscreensaver');
          # Remove applications that might be keeping X alive.
-        delete $applications{'xinit'};
-        delete $applications{'X'};
-        delete $applications{$self->var_get('MM_X_MYTH_PROGRAM')};
+        @applications = grep(!/^xinit|X|$myth_program$/, @applications);
          # Kill them and wait for them to die.
-        $self->x_applications_kill(\%applications);
-        $self->x_applications_dead(\%applications);
+        $self->x_applications_kill(@applications);
+        $self->x_applications_dead(@applications);
      }

      # Create the list of xlsclients X applications but are not keeping X  
alive,
@@ -2352,38 +2345,38 @@
      #   However, there may be some unknown X applications not keeping X  
alive that we need to kill.
      if (open(FILE, '-|', "/usr/bin/xlsclients -display ':0.0' -a 2>  
$devnull"))
      {
+        my $myth_program = $self->var_get('MM_X_MYTH_PROGRAM');
          # Create a list of xlsclients X applications.
-        my %applications = ();
+        my @applications = ();
          while (<FILE>)
          {
              chomp;
              s/^([^ ]+) +([^ ]+)( .*)?$/$2/;
              s/^.*\///;
-            $applications{$_} = 1;
+            push(@applications, $_);
          }
          # Remove applications that might be keeping X alive.
-        delete $applications{'xinit'};
-        delete $applications{'X'};
-        delete $applications{$self->var_get('MM_X_MYTH_PROGRAM')};
+        @applications = grep(!/^xinit|X|$myth_program$/, @applications);
          # Kill them and wait for them to die.
-        $self->x_applications_kill(\%applications);
-        $self->x_applications_dead(\%applications);
+        $self->x_applications_kill(@applications);
+        $self->x_applications_dead(@applications);
      }

      # Create the list of the known X applications keeping X alive, kill  
them and wait for them to die.
      {
-        my %applications = ();
-        $applications{$self->var_get('MM_X_MYTH_PROGRAM')} = 1;
-        $self->x_applications_kill(\%applications);
-        $self->x_applications_dead(\%applications);
+        my $myth_program = $self->var_get('MM_X_MYTH_PROGRAM');
+        my @applications = ();
+        push(@applications, $myth_program);
+        $self->x_applications_kill(@applications);
+        $self->x_applications_dead(@applications);
      }

      # Create the list of remaining known X applications and wait for them  
to die.
      {
-        my %applications = ();
-        $applications{'xinit'} = 1;
-        $applications{'X'} = 1;
-        $self->x_applications_dead(\%applications);
+        my @applications = ();
+        push(@applications, 'xinit');
+        push(@applications, 'X');
+        $self->x_applications_dead(@applications);
      }

      return 1;

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"minimyth-commits" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/minimyth-commits?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to