git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge commit 'origin/bug_112_enable_extensions_manager' into experimental
[enigma2.git]
/
lib
/
driver
/
rc.cpp
diff --git
a/lib/driver/rc.cpp
b/lib/driver/rc.cpp
index 790c5f6c4df88542e0f91340fb2c055e766a1db0..c56fde448cd396ea72af4be94b4655e368b5e9bb 100644
(file)
--- a/
lib/driver/rc.cpp
+++ b/
lib/driver/rc.cpp
@@
-8,7
+8,6
@@
#include <lib/base/init.h>
#include <lib/base/init_num.h>
#include <lib/base/init.h>
#include <lib/base/init_num.h>
-#include <lib/base/econfig.h>
#include <lib/base/eerror.h>
/*
#include <lib/base/eerror.h>
/*
@@
-35,12
+34,7
@@
* actions. have fun.
*/
* actions. have fun.
*/
-int eRCDevice::getKeyCompatibleCode(const eRCKey &) const
-{
- return -1;
-}
-
-eRCDevice::eRCDevice(eString id, eRCDriver *driver): driver(driver), id(id)
+eRCDevice::eRCDevice(std::string id, eRCDriver *driver): driver(driver), id(id)
{
input=driver->getInput();
driver->addCodeListener(this);
{
input=driver->getInput();
driver->addCodeListener(this);
@@
-85,9
+79,8
@@
eRCShortDriver::eRCShortDriver(const char *filename): eRCDriver(eRCInput::getIns
sn=0;
} else
{
sn=0;
} else
{
- sn=
new eSocketNotifier
(eApp, handle, eSocketNotifier::Read);
+ sn=
eSocketNotifier::create
(eApp, handle, eSocketNotifier::Read);
CONNECT(sn->activated, eRCShortDriver::keyPressed);
CONNECT(sn->activated, eRCShortDriver::keyPressed);
- eRCInput::getInstance()->setFile(handle);
}
}
}
}
@@
-95,8
+88,6
@@
eRCShortDriver::~eRCShortDriver()
{
if (handle>=0)
close(handle);
{
if (handle>=0)
close(handle);
- if (sn)
- delete sn;
}
void eRCInputEventDriver::keyPressed(int)
}
void eRCInputEventDriver::keyPressed(int)
@@
-108,7
+99,7
@@
void eRCInputEventDriver::keyPressed(int)
break;
if (enabled && !input->islocked())
for (std::list<eRCDevice*>::iterator i(listeners.begin()); i!=listeners.end(); ++i)
break;
if (enabled && !input->islocked())
for (std::list<eRCDevice*>::iterator i(listeners.begin()); i!=listeners.end(); ++i)
- (*i)->handleCode((
int
)&ev);
+ (*i)->handleCode((
long
)&ev);
}
}
}
}
@@
-121,13
+112,12
@@
eRCInputEventDriver::eRCInputEventDriver(const char *filename): eRCDriver(eRCInp
sn=0;
} else
{
sn=0;
} else
{
- sn=
new eSocketNotifier
(eApp, handle, eSocketNotifier::Read);
+ sn=
eSocketNotifier::create
(eApp, handle, eSocketNotifier::Read);
CONNECT(sn->activated, eRCInputEventDriver::keyPressed);
CONNECT(sn->activated, eRCInputEventDriver::keyPressed);
- eRCInput::getInstance()->setFile(handle);
}
}
}
}
-
eS
tring eRCInputEventDriver::getDeviceName()
+
std::s
tring eRCInputEventDriver::getDeviceName()
{
char name[128]="";
if (handle >= 0)
{
char name[128]="";
if (handle >= 0)
@@
-135,12
+125,20
@@
eString eRCInputEventDriver::getDeviceName()
return name;
}
return name;
}
+void eRCInputEventDriver::setExclusive(bool b)
+{
+ if (handle >= 0)
+ {
+ int grab = b;
+ if (::ioctl(handle, EVIOCGRAB, grab) < 0)
+ perror("EVIOCGRAB");
+ }
+}
+
eRCInputEventDriver::~eRCInputEventDriver()
{
if (handle>=0)
close(handle);
eRCInputEventDriver::~eRCInputEventDriver()
{
if (handle>=0)
close(handle);
- if (sn)
- delete sn;
}
eRCConfig::eRCConfig()
}
eRCConfig::eRCConfig()
@@
-163,15
+161,10
@@
void eRCConfig::reload()
{
rdelay=500;
rrate=100;
{
rdelay=500;
rrate=100;
- if ( eConfig::getInstance()->getKey("/ezap/rc/repeatRate", rrate) )
- save();
- eConfig::getInstance()->getKey("/ezap/rc/repeatDelay", rdelay);
}
void eRCConfig::save()
{
}
void eRCConfig::save()
{
- eConfig::getInstance()->setKey("/ezap/rc/repeatRate", rrate);
- eConfig::getInstance()->setKey("/ezap/rc/repeatDelay", rdelay);
}
eRCInput *eRCInput::instance;
}
eRCInput *eRCInput::instance;
@@
-180,8
+173,8
@@
eRCInput::eRCInput()
{
ASSERT( !instance);
instance=this;
{
ASSERT( !instance);
instance=this;
- handle = -1;
locked = 0;
locked = 0;
+ keyboardMode = kmNone;
}
eRCInput::~eRCInput()
}
eRCInput::~eRCInput()
@@
-197,47
+190,44
@@
bool eRCInput::open()
return false;
}
return false;
}
-
int
eRCInput::lock()
+
void
eRCInput::lock()
{
locked=1;
{
locked=1;
- return handle;
+ for (std::map<std::string,eRCDevice*>::iterator i=devices.begin(); i != devices.end(); ++i)
+ i->second->setExclusive(false);
}
void eRCInput::unlock()
{
}
void eRCInput::unlock()
{
- if (locked)
- locked=0;
-}
-
-void eRCInput::setFile(int newh)
-{
- handle=newh;
+ locked=0;
+ for (std::map<std::string,eRCDevice*>::iterator i=devices.begin(); i != devices.end(); ++i)
+ i->second->setExclusive(true);
}
}
-void eRCInput::addDevice(const
eS
tring &id, eRCDevice *dev)
+void eRCInput::addDevice(const
std::s
tring &id, eRCDevice *dev)
{
{
- devices.insert(std::pair<
eS
tring,eRCDevice*>(id, dev));
+ devices.insert(std::pair<
std::s
tring,eRCDevice*>(id, dev));
}
}
-void eRCInput::removeDevice(const
eS
tring &id)
+void eRCInput::removeDevice(const
std::s
tring &id)
{
devices.erase(id);
}
{
devices.erase(id);
}
-eRCDevice *eRCInput::getDevice(const
eS
tring &id)
+eRCDevice *eRCInput::getDevice(const
std::s
tring &id)
{
{
- std::map<
eS
tring,eRCDevice*>::iterator i=devices.find(id);
+ std::map<
std::s
tring,eRCDevice*>::iterator i=devices.find(id);
if (i == devices.end())
{
eDebug("failed, possible choices are:");
if (i == devices.end())
{
eDebug("failed, possible choices are:");
- for (std::map<
eString,eRCDevice*>::iterator i=devices.begin(); i != devices.end(); ++i)
+ for (std::map<
std::string,eRCDevice*>::iterator i=devices.begin(); i != devices.end(); ++i)
eDebug("%s", i->first.c_str());
return 0;
}
return i->second;
}
eDebug("%s", i->first.c_str());
return 0;
}
return i->second;
}
-std::map<
eS
tring,eRCDevice*,eRCInput::lstr> &eRCInput::getDevices()
+std::map<
std::s
tring,eRCDevice*,eRCInput::lstr> &eRCInput::getDevices()
{
return devices;
}
{
return devices;
}