diff options
| -rw-r--r-- | CONTRIBUTORS | 3 | ||||
| -rw-r--r-- | HISTORY | 2 | ||||
| -rw-r--r-- | osd.c | 5 | ||||
| -rw-r--r-- | remote.c | 17 | ||||
| -rw-r--r-- | remote.h | 4 | 
5 files changed, 22 insertions, 9 deletions
| diff --git a/CONTRIBUTORS b/CONTRIBUTORS index e43c739c..da92b79f 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -624,3 +624,6 @@ Andreas Mair <Andreas.Mair@linogate.com>  Olivier Jacques <jacquesolivier@hotmail.com>)   for translating OSD texts to the French language + +Kai Moeller <moeller.ki@gmx.de> + for reporting a double call to MainMenuAction() of a plugin if invoked via a hotkey @@ -2092,3 +2092,5 @@ Video Disk Recorder Revision History  - Fixed paging through lists with repeated Left/Right keys.  - Fixed setting the PCR-PID in case it is equal to one of the other PIDs (thanks    to Oliver Endriss for reporting this one). +- Fixed double call to MainMenuAction() of a plugin if invoked via a hotkey (thanks +  to Kai Moeller for reporting this one). @@ -4,7 +4,7 @@   * See the main source file 'vdr.c' for copyright information and   * how to reach the author.   * - * $Id: osd.c 1.40 2003/03/23 15:41:54 kls Exp $ + * $Id: osd.c 1.41 2003/05/02 10:46:13 kls Exp $   */  #include "osd.h" @@ -578,7 +578,8 @@ eOSState cOsdMenu::HotKey(eKeys Key)        if (s && (s = skipspace(s)) != NULL) {           if (*s == Key - k1 + '1') {              current = item->Index(); -            return ProcessKey(kOk); +            cRemote::Put(kOk, true); +            break;              }           }        } @@ -4,7 +4,7 @@   * See the main source file 'vdr.c' for copyright information and   * how to reach the author.   * - * $Id: remote.c 1.37 2003/05/01 14:44:55 kls Exp $ + * $Id: remote.c 1.38 2003/05/02 10:49:50 kls Exp $   */  #include "remote.h" @@ -58,7 +58,7 @@ void cRemote::Clear(void)       }  } -bool cRemote::Put(eKeys Key) +bool cRemote::Put(eKeys Key, bool AtFront)  {    if (Key != kNone) {       cMutexLock MutexLock(&mutex); @@ -68,9 +68,16 @@ bool cRemote::Put(eKeys Key)       if (d <= 0)          d = MaxKeys + d;       if (d - 1 > 0) { -        keys[in] = Key; -        if (++in >= MaxKeys) -           in = 0; +        if (AtFront) { +           if (--out < 0) +              out = MaxKeys - 1; +           keys[out] = Key; +           } +        else { +           keys[in] = Key; +           if (++in >= MaxKeys) +              in = 0; +           }          keyPressed.Broadcast();          return true;          } @@ -4,7 +4,7 @@   * See the main source file 'vdr.c' for copyright information and   * how to reach the author.   * - * $Id: remote.h 1.27 2003/05/01 14:45:00 kls Exp $ + * $Id: remote.h 1.28 2003/05/02 10:41:35 kls Exp $   */  #ifndef __REMOTE_H @@ -42,7 +42,7 @@ public:    const char *Name(void) { return name; }    static void SetLearning(cRemote *Learning) { learning = Learning; }    static void Clear(void); -  static bool Put(eKeys Key); +  static bool Put(eKeys Key, bool AtFront = false);    static bool PutMacro(eKeys Key);    static const char *GetPlugin(void) { return plugin; }    static bool HasKeys(void); | 
