summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS3
-rw-r--r--HISTORY2
-rw-r--r--osd.c5
-rw-r--r--remote.c17
-rw-r--r--remote.h4
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
diff --git a/HISTORY b/HISTORY
index 331c5097..9c10c984 100644
--- a/HISTORY
+++ b/HISTORY
@@ -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).
diff --git a/osd.c b/osd.c
index d048f5ca..96e038a4 100644
--- a/osd.c
+++ b/osd.c
@@ -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;
}
}
}
diff --git a/remote.c b/remote.c
index 80d77ed3..1b73d168 100644
--- a/remote.c
+++ b/remote.c
@@ -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;
}
diff --git a/remote.h b/remote.h
index ce677218..64a20976 100644
--- a/remote.h
+++ b/remote.h
@@ -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);