--- menu.c	Wed Aug 28 21:44:24 2002
+++ menu.c.chad	Wed Aug 28 21:44:09 2002
@@ -33,6 +33,12 @@
 #include "ajf.h"
 #endif
 
+
+
+extern bool restore;
+extern bool paused;
+extern bool display_keylock_text;
+
 struct menu {
     int top;
     int cursor;
@@ -253,22 +259,51 @@
 
 #ifdef HAVE_RECORDER_KEYPAD
             case BUTTON_RIGHT:
+#else
+            case BUTTON_PLAY
 #endif
-            case BUTTON_PLAY:
                 /* Erase current display state */
                 lcd_scroll_pause(); /* pause is better than stop when
                                        are gonna clear the screen anyway */
                 lcd_clear_display();
-            
+
                 /* if a child returns that the contents is changed, we
                    must remember this, even if we perhaps invoke other
                    children too before returning back */
                 if(MENU_DISK_CHANGED ==
                    menus[m].items[menus[m].cursor].function())
                   result = MENU_DISK_CHANGED;
-            
+
                 /* Return to previous display state */
                 menu_draw(m);
+                break;
+
+#ifdef HAVE_RECORDER_KEYPAD
+
+            case BUTTON_PLAY:
+#endif
+                 /*if (keys_locked) who cares we won't be in menu if locked*/
+
+                if ( !paused )
+                {
+                    mpeg_pause();
+                    paused = true;
+                    status_set_playmode(STATUS_PAUSE);
+                    status_draw();
+                    if (global_settings.resume) {
+                        settings_save();
+#ifndef HAVE_RTC
+                        ata_flush();
+#endif
+                    }
+                }
+                else
+                {
+                    mpeg_resume();
+                    paused = false;
+                    status_set_playmode(STATUS_PLAY);
+                    status_draw();
+                }
                 break;
 
 #ifdef HAVE_RECORDER_KEYPAD

