diff options
author | knedlyk | 2015-06-23 23:28:00 +0200 |
---|---|---|
committer | knedlyk | 2015-06-23 23:28:00 +0200 |
commit | ca00a19b64e898b111caac675ddb3e7049b5e75d (patch) | |
tree | a38aa877dfeb1e0e4bd1ec6e89532287073fad5e | |
download | aur-enigma2.tar.gz |
Initial import
-rw-r--r-- | .AURINFO | 53 | ||||
-rw-r--r-- | .SRCINFO | 53 | ||||
-rw-r--r-- | PKGBUILD | 70 | ||||
-rw-r--r-- | etc.tar.gz | bin | 0 -> 101628 bytes | |||
-rw-r--r-- | giflib.patch | 11 | ||||
-rw-r--r-- | rollback_lirc_support.diff | 753 |
6 files changed, 940 insertions, 0 deletions
diff --git a/.AURINFO b/.AURINFO new file mode 100644 index 000000000000..0f57cac6f002 --- /dev/null +++ b/.AURINFO @@ -0,0 +1,53 @@ +pkgbase = enigma2 + pkgdesc = Enigma2 - software for Linux-powered DVB satellite, terrestrial and cable digital television receivers (e.g. Dreambox). This is experimental version for PC. + pkgver = 20140610 + pkgrel = 1 + url = https://github.com/cougar-enigma/Enigma2PC + arch = i686 + arch = x86_64 + license = GPL2 + makedepends = autoconf + makedepends = automake + makedepends = bison + makedepends = fakeroot + makedepends = flex + makedepends = libtool + makedepends = m4 + makedepends = make + makedepends = patch + makedepends = pkg-config + makedepends = git + makedepends = linux-headers + depends = gettext + depends = libdvdnav + depends = freetype2 + depends = fribidi + depends = giflib + depends = gstreamer0.10 + depends = gstreamer0.10-base-plugins + depends = libjpeg6 + depends = libpng + depends = sdl + depends = libsigc++ + depends = libxml2 + depends = libxslt + depends = python2 + depends = swig + depends = libdvbsi++ + depends = libxmlccwrap + depends = libdreamdvd + depends = libdvbcsa + depends = xine-lib_for_enigma2 + depends = twisted-web2 + depends = libsigcpp1.2 + source = git://github.com/Raider05/enigma2pc.git + source = rollback_lirc_support.diff + source = etc.tar.gz + source = giflib.patch + md5sums = SKIP + md5sums = 5bb8d4b8e62cd664da681b5444fab301 + md5sums = 97ae27f051e79c33616bcc4360c80557 + md5sums = 6be3deaaf53b01bd7e262ac711a16fc5 + +pkgname = enigma2 + diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..0f57cac6f002 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,53 @@ +pkgbase = enigma2 + pkgdesc = Enigma2 - software for Linux-powered DVB satellite, terrestrial and cable digital television receivers (e.g. Dreambox). This is experimental version for PC. + pkgver = 20140610 + pkgrel = 1 + url = https://github.com/cougar-enigma/Enigma2PC + arch = i686 + arch = x86_64 + license = GPL2 + makedepends = autoconf + makedepends = automake + makedepends = bison + makedepends = fakeroot + makedepends = flex + makedepends = libtool + makedepends = m4 + makedepends = make + makedepends = patch + makedepends = pkg-config + makedepends = git + makedepends = linux-headers + depends = gettext + depends = libdvdnav + depends = freetype2 + depends = fribidi + depends = giflib + depends = gstreamer0.10 + depends = gstreamer0.10-base-plugins + depends = libjpeg6 + depends = libpng + depends = sdl + depends = libsigc++ + depends = libxml2 + depends = libxslt + depends = python2 + depends = swig + depends = libdvbsi++ + depends = libxmlccwrap + depends = libdreamdvd + depends = libdvbcsa + depends = xine-lib_for_enigma2 + depends = twisted-web2 + depends = libsigcpp1.2 + source = git://github.com/Raider05/enigma2pc.git + source = rollback_lirc_support.diff + source = etc.tar.gz + source = giflib.patch + md5sums = SKIP + md5sums = 5bb8d4b8e62cd664da681b5444fab301 + md5sums = 97ae27f051e79c33616bcc4360c80557 + md5sums = 6be3deaaf53b01bd7e262ac711a16fc5 + +pkgname = enigma2 + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..04f5e6d01141 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,70 @@ +# Contributor: Stas Bourakov <sbourakov(at)gmail.com> +pkgname=enigma2 +pkgver=20140610 +pkgrel=1 +pkgdesc="Enigma2 - software for Linux-powered DVB satellite, terrestrial and cable digital television receivers (e.g. Dreambox). This is experimental version for PC." +arch=('i686' 'x86_64') +url="https://github.com/cougar-enigma/Enigma2PC" +license=('GPL2') +depends=('gettext' 'libdvdnav' 'freetype2' 'fribidi' 'giflib' 'gstreamer0.10' 'gstreamer0.10-base-plugins' 'libjpeg6' 'libpng' 'sdl' 'libsigc++' 'libxml2' 'libxslt' 'python2' 'swig' 'libdvbsi++' 'libxmlccwrap' 'libdreamdvd' 'libdvbcsa' 'xine-lib_for_enigma2' 'twisted-web2' 'libsigcpp1.2') +makedepends=('autoconf' 'automake' 'bison' 'fakeroot' 'flex' 'libtool' 'm4' 'make' 'patch' 'pkg-config' 'git' 'linux-headers') +conflicts=() +source=('git://github.com/Raider05/enigma2pc.git' + 'rollback_lirc_support.diff' + 'etc.tar.gz' + 'giflib.patch') + +#_commit='' +#_gitroot='git://github.com/Raider05/enigma2pc.git' +_gitname='enigma2pc' + +pkgver() { + cd "$srcdir/$_gitname" + git log -1 --pretty=format:%cd --date=short | sed 's/-//g' +} + +package() { +# cd "${srcdir}" +# msg "Connecting to GIT server...." +# +# if [ -d "${_gitname}" ] ; then +# cd "${_gitname}" && git checkout "${_commit}" && git pull origin +# [[ "${_commit}" ]] && git checkout "${_commit}" +# msg "The local files are updated." +# #msg "Running make distclean" +# #make distclean || : +# else +# git clone "${_gitroot}" "${_gitname}" #-b "${_commit}" +# cd "${_gitname}" +# [[ "${_commit}" ]] && git checkout "${_commit}" +# fi +# + if [ -d "$srcdir/$_gitname-build" ]; then + rm -r "$srcdir/$_gitname-build" + fi + + cp -r "$srcdir/$_gitname" "$srcdir/$_gitname-build" + cd "$srcdir/$_gitname-build/enigma2" +# patch -p1 -i ${srcdir}/enigma21_11_11.patch +# patch -p1 -i ${srcdir}/patch_eptrlist.patch + patch -p2 -i ${srcdir}/giflib.patch + + + autoreconf -i || return 1 + ./configure --without-debug --prefix=/usr/local --with-xlib PYTHON="/usr/bin/python2" || return 1 + make || return 1 + make install DESTDIR=$pkgdir || return 1 + cp -fR lib/gdi/*.h $pkgdir/usr/local/include/enigma2/lib/gdi + cd dvbsoftwareca + make || return 1 + install -D dvbsoftwareca.ko $pkgdir/lib/modules/`uname -r`/kernel/drivers/dvbsoftwareca.ko + +# Copy config files + mkdir -p $pkgdir/usr/local/etc + cd "$srcdir/" + cp -r $startdir/src/etc/* $pkgdir/usr/local/etc +} +md5sums=('SKIP' + '5bb8d4b8e62cd664da681b5444fab301' + '97ae27f051e79c33616bcc4360c80557' + '6be3deaaf53b01bd7e262ac711a16fc5') diff --git a/etc.tar.gz b/etc.tar.gz Binary files differnew file mode 100644 index 000000000000..034b2249f91b --- /dev/null +++ b/etc.tar.gz diff --git a/giflib.patch b/giflib.patch new file mode 100644 index 000000000000..5bb2e8f1f5ca --- /dev/null +++ b/giflib.patch @@ -0,0 +1,11 @@ +--- Enigma2PC/enigma2/lib/gdi/picload.cpp 2014-11-14 13:31:25.520547625 +0100 ++++ Enigma2PC-build/enigma2/lib/gdi/picload.cpp 2014-11-14 16:10:11.584332546 +0100 +@@ -538,7 +538,7 @@ + int cmaps; + int extcode; + +- gft = DGifOpenFileName(filepara->file); ++ gft = DGifOpenFileName(filepara->file, NULL); + if (gft == NULL) + return; + do diff --git a/rollback_lirc_support.diff b/rollback_lirc_support.diff new file mode 100644 index 000000000000..17e1dfddc77c --- /dev/null +++ b/rollback_lirc_support.diff @@ -0,0 +1,753 @@ +diff -ruN Enigma2PC/lib/base/condVar.cpp Enigma2PC-old/lib/base/condVar.cpp +--- Enigma2PC/lib/base/condVar.cpp 2011-07-24 10:58:27.000000000 +0400 ++++ Enigma2PC-old/lib/base/condVar.cpp 2011-07-23 09:48:01.000000000 +0400 +@@ -187,61 +187,3 @@ + return false; + } + +- +-// --- cTimeMs --------------------------------------------------------------- +- +-cTimeMs::cTimeMs(int Ms) +-{ +- Set(Ms); +-} +- +-uint64_t cTimeMs::Now(void) +-{ +-#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK) +-#define MIN_RESOLUTION 5 // ms +- static bool initialized = false; +- static bool monotonic = false; +- struct timespec tp; +- if (!initialized) { +- // check if monotonic timer is available and provides enough accurate resolution: +- if (clock_getres(CLOCK_MONOTONIC, &tp) == 0) { +- long Resolution = tp.tv_nsec; +- // require a minimum resolution: +- if (tp.tv_sec == 0 && tp.tv_nsec <= MIN_RESOLUTION * 1000000) { +- if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0) { +- monotonic = true; +- } +- } +- } +- initialized = true; +- } +- if (monotonic) { +- if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0) +- return (uint64_t(tp.tv_sec)) * 1000 + tp.tv_nsec / 1000000; +- monotonic = false; +- // fall back to gettimeofday() +- } +-#else +-# warning Posix monotonic clock not available +-#endif +- struct timeval t; +- if (gettimeofday(&t, NULL) == 0) +- return (uint64_t(t.tv_sec)) * 1000 + t.tv_usec / 1000; +- return 0; +-} +- +-void cTimeMs::Set(int Ms) +-{ +- begin = Now() + Ms; +-} +- +-bool cTimeMs::TimedOut(void) +-{ +- return Now() >= begin; +-} +- +-uint64_t cTimeMs::Elapsed(void) +-{ +- return Now() - begin; +-} +- +diff -ruN Enigma2PC/lib/base/condVar.h Enigma2PC-old/lib/base/condVar.h +--- Enigma2PC/lib/base/condVar.h 2011-07-24 10:58:27.000000000 +0400 ++++ Enigma2PC-old/lib/base/condVar.h 2011-07-23 09:48:01.000000000 +0400 +@@ -49,16 +49,4 @@ + bool Lock(cMutex *Mutex); + }; + +-class cTimeMs { +-private: +- uint64_t begin; +-public: +- cTimeMs(int Ms = 0); +- ///< Creates a timer with ms resolution and an initial timeout of Ms. +- static uint64_t Now(void); +- void Set(int Ms = 0); +- bool TimedOut(void); +- uint64_t Elapsed(void); +-}; +- + #endif +diff -ruN Enigma2PC/lib/driver/Makefile.am Enigma2PC-old/lib/driver/Makefile.am +--- Enigma2PC/lib/driver/Makefile.am 2011-07-24 10:58:27.000000000 +0400 ++++ Enigma2PC-old/lib/driver/Makefile.am 2011-07-23 09:48:01.000000000 +0400 +@@ -40,7 +40,5 @@ + if HAVE_XLIB + libenigma_driver_a_SOURCES += \ + rcxlib.cpp \ +- rcxlib.h \ +- rclirc.cpp \ +- rclirc.h ++ rcxlib.h + endif +diff -ruN Enigma2PC/lib/driver/rclirc.cpp Enigma2PC-old/lib/driver/rclirc.cpp +--- Enigma2PC/lib/driver/rclirc.cpp 2011-07-24 10:58:27.000000000 +0400 ++++ Enigma2PC-old/lib/driver/rclirc.cpp 1970-01-01 03:00:00.000000000 +0300 +@@ -1,579 +0,0 @@ +-/* +- * LIRC support based on LIRC for VDR, which was written by +- * Carsten Koch. +- * +- */ +- +-#include <netinet/in.h> +-#include <sys/socket.h> +-#include <lib/driver/rclirc.h> +-#include <lib/base/init.h> +-#include <lib/base/init_num.h> +-#include <lib/base/condVar.h> +-#include <lib/driver/input_fake.h> +- +- +-static tKey keyTable[] = { // "Up" and "Down" must be the first two keys! +- { KEY_RESERVED, "KEY_RESERVED" }, +- { KEY_ESC, "KEY_ESC" }, +- { KEY_1, "KEY_1" }, +- { KEY_2, "KEY_2" }, +- { KEY_3, "KEY_3" }, +- { KEY_4, "KEY_4" }, +- { KEY_5, "KEY_5" }, +- { KEY_6, "KEY_6" }, +- { KEY_7, "KEY_7" }, +- { KEY_8, "KEY_8" }, +- { KEY_9, "KEY_9" }, +- { KEY_0, "KEY_0" }, +- { KEY_MINUS, "KEY_MINUS" }, +- { KEY_EQUAL, "KEY_EQUAL" }, +- { KEY_BACKSPACE, "KEY_BACKSPACE" }, +- { KEY_TAB, "KEY_TAB" }, +- { KEY_Q, "KEY_Q" }, +- { KEY_W, "KEY_W" }, +- { KEY_E, "KEY_E" }, +- { KEY_R, "KEY_R" }, +- { KEY_T, "KEY_T" }, +- { KEY_Y, "KEY_Y" }, +- { KEY_U, "KEY_U" }, +- { KEY_I, "KEY_I" }, +- { KEY_O, "KEY_O" }, +- { KEY_P, "KEY_P" }, +- { KEY_LEFTBRACE, "KEY_LEFTBRACE" }, +- { KEY_RIGHTBRACE, "KEY_RIGHTBRACE" }, +- { KEY_ENTER, "KEY_ENTER" }, +- { KEY_LEFTCTRL, "KEY_LEFTCTRL" }, +- { KEY_A, "KEY_A" }, +- { KEY_S, "KEY_S" }, +- { KEY_D, "KEY_D" }, +- { KEY_F, "KEY_F" }, +- { KEY_G, "KEY_G" }, +- { KEY_H, "KEY_H" }, +- { KEY_J, "KEY_J" }, +- { KEY_K, "KEY_K" }, +- { KEY_L, "KEY_L" }, +- { KEY_SEMICOLON, "KEY_SEMICOLON" }, +- { KEY_APOSTROPHE, "KEY_APOSTROPHE" }, +- { KEY_GRAVE, "KEY_GRAVE" }, +- { KEY_LEFTSHIFT, "KEY_LEFTSHIFT" }, +- { KEY_BACKSLASH, "KEY_BACKSLASH" }, +- { KEY_Z, "KEY_Z" }, +- { KEY_X, "KEY_X" }, +- { KEY_C, "KEY_C" }, +- { KEY_V, "KEY_V" }, +- { KEY_B, "KEY_B" }, +- { KEY_N, "KEY_N" }, +- { KEY_M, "KEY_M" }, +- { KEY_COMMA, "KEY_COMMA" }, +- { KEY_DOT, "KEY_DOT" }, +- { KEY_SLASH, "KEY_SLASH" }, +- { KEY_RIGHTSHIFT, "KEY_RIGHTSHIFT" }, +- { KEY_KPASTERISK, "KEY_KPASTERISK" }, +- { KEY_LEFTALT, "KEY_LEFTALT" }, +- { KEY_SPACE, "KEY_SPACE" }, +- { KEY_CAPSLOCK, "KEY_CAPSLOCK" }, +- { KEY_F1, "KEY_F1" }, +- { KEY_F2, "KEY_F2" }, +- { KEY_F3, "KEY_F3" }, +- { KEY_F4, "KEY_F4" }, +- { KEY_F5, "KEY_F5" }, +- { KEY_F6, "KEY_F6" }, +- { KEY_F7, "KEY_F7" }, +- { KEY_F8, "KEY_F8" }, +- { KEY_F9, "KEY_F9" }, +- { KEY_F10, "KEY_F10" }, +- { KEY_NUMLOCK, "KEY_NUMLOCK" }, +- { KEY_SCROLLLOCK, "KEY_SCROLLLOCK" }, +- { KEY_KP7, "KEY_KP7" }, +- { KEY_KP8, "KEY_KP8" }, +- { KEY_KP9, "KEY_KP9" }, +- { KEY_KPMINUS, "KEY_KPMINUS" }, +- { KEY_KP4, "KEY_KP4" }, +- { KEY_KP5, "KEY_KP5" }, +- { KEY_KP6, "KEY_KP6" }, +- { KEY_KP1, "KEY_KP1" }, +- { KEY_KP2, "KEY_KP2" }, +- { KEY_KP3, "KEY_KP3" }, +- { KEY_KP0, "KEY_KP0" }, +- { KEY_KPDOT, "KEY_KPDOT" }, +- { KEY_ZENKAKUHANKAKU, "KEY_ZENKAKUHANKAKU" }, +- { KEY_102ND, "KEY_102ND" }, +- { KEY_F11, "KEY_F11" }, +- { KEY_F12, "KEY_F12" }, +- { KEY_RO, "KEY_RO" }, +- { KEY_KATAKANA, "KEY_KATAKANA" }, +- { KEY_HIRAGANA, "KEY_HIRAGANA" }, +- { KEY_HENKAN, "KEY_HENKAN" }, +- { KEY_KATAKANAHIRAGANA, "KEY_KATAKANAHIRAGANA" }, +- { KEY_MUHENKAN, "KEY_MUHENKAN" }, +- { KEY_KPJPCOMMA, "KEY_KPJPCOMMA" }, +- { KEY_KPENTER, "KEY_KPENTER" }, +- { KEY_RIGHTCTRL, "KEY_RIGHTCTRL" }, +- { KEY_KPSLASH, "KEY_KPSLASH" }, +- { KEY_SYSRQ, "KEY_SYSRQ" }, +- { KEY_RIGHTALT, "KEY_RIGHTALT" }, +- { KEY_LINEFEED, "KEY_LINEFEED" }, +- { KEY_HOME, "KEY_HOME" }, +- { KEY_UP, "KEY_UP" }, +- { KEY_PAGEUP, "KEY_PAGEUP" }, +- { KEY_LEFT, "KEY_LEFT" }, +- { KEY_RIGHT, "KEY_RIGHT" }, +- { KEY_END, "KEY_END" }, +- { KEY_DOWN, "KEY_DOWN" }, +- { KEY_PAGEDOWN, "KEY_PAGEDOWN" }, +- { KEY_INSERT, "KEY_INSERT" }, +- { KEY_DELETE, "KEY_DELETE" }, +- { KEY_MACRO, "KEY_MACRO" }, +- { KEY_MUTE, "KEY_MUTE" }, +- { KEY_VOLUMEDOWN, "KEY_VOLUMEDOWN" }, +- { KEY_VOLUMEUP, "KEY_VOLUMEUP" }, +- { KEY_POWER, "KEY_POWER" }, +- { KEY_KPEQUAL, "KEY_KPEQUAL" }, +- { KEY_KPPLUSMINUS, "KEY_KPPLUSMINUS" }, +- { KEY_PAUSE, "KEY_PAUSE" }, +- { KEY_SCALE, "KEY_SCALE" }, +- { KEY_KPCOMMA, "KEY_KPCOMMA" }, +- { KEY_HANGEUL, "KEY_HANGEUL" }, +- { KEY_HANGUEL, "KEY_HANGUEL" }, +- { KEY_HANJA, "KEY_HANJA" }, +- { KEY_YEN, "KEY_YEN" }, +- { KEY_LEFTMETA, "KEY_LEFTMETA" }, +- { KEY_RIGHTMETA, "KEY_RIGHTMETA" }, +- { KEY_COMPOSE, "KEY_COMPOSE" }, +- { KEY_STOP, "KEY_STOP" }, +- { KEY_AGAIN, "KEY_AGAIN" }, +- { KEY_PROPS, "KEY_PROPS" }, +- { KEY_UNDO, "KEY_UNDO" }, +- { KEY_FRONT, "KEY_FRONT" }, +- { KEY_COPY, "KEY_COPY" }, +- { KEY_OPEN, "KEY_OPEN" }, +- { KEY_PASTE, "KEY_PASTE" }, +- { KEY_FIND, "KEY_FIND" }, +- { KEY_CUT, "KEY_CUT" }, +- { KEY_HELP, "KEY_HELP" }, +- { KEY_MENU, "KEY_MENU" }, +- { KEY_CALC, "KEY_CALC" }, +- { KEY_SETUP, "KEY_SETUP" }, +- { KEY_SLEEP, "KEY_SLEEP" }, +- { KEY_WAKEUP, "KEY_WAKEUP" }, +- { KEY_FILE, "KEY_FILE" }, +- { KEY_SENDFILE, "KEY_SENDFILE" }, +- { KEY_DELETEFILE, "KEY_DELETEFILE" }, +- { KEY_XFER, "KEY_XFER" }, +- { KEY_PROG1, "KEY_PROG1" }, +- { KEY_PROG2, "KEY_PROG2" }, +- { KEY_WWW, "KEY_WWW" }, +- { KEY_MSDOS, "KEY_MSDOS" }, +- { KEY_COFFEE, "KEY_COFFEE" }, +- { KEY_SCREENLOCK, "KEY_SCREENLOCK" }, +- { KEY_DIRECTION, "KEY_DIRECTION" }, +- { KEY_CYCLEWINDOWS, "KEY_CYCLEWINDOWS" }, +- { KEY_MAIL, "KEY_MAIL" }, +- { KEY_BOOKMARKS, "KEY_BOOKMARKS" }, +- { KEY_COMPUTER, "KEY_COMPUTER" }, +- { KEY_BACK, "KEY_BACK" }, +- { KEY_FORWARD, "KEY_FORWARD" }, +- { KEY_CLOSECD, "KEY_CLOSECD" }, +- { KEY_EJECTCD, "KEY_EJECTCD" }, +- { KEY_EJECTCLOSECD, "KEY_EJECTCLOSECD" }, +- { KEY_NEXTSONG, "KEY_NEXTSONG" }, +- { KEY_PLAYPAUSE, "KEY_PLAYPAUSE" }, +- { KEY_PREVIOUSSONG, "KEY_PREVIOUSSONG" }, +- { KEY_STOPCD, "KEY_STOPCD" }, +- { KEY_RECORD, "KEY_RECORD" }, +- { KEY_REWIND, "KEY_REWIND" }, +- { KEY_PHONE, "KEY_PHONE" }, +- { KEY_ISO, "KEY_ISO" }, +- { KEY_CONFIG, "KEY_CONFIG" }, +- { KEY_HOMEPAGE, "KEY_HOMEPAGE" }, +- { KEY_REFRESH, "KEY_REFRESH" }, +- { KEY_EXIT, "KEY_EXIT" }, +- { KEY_MOVE, "KEY_MOVE" }, +- { KEY_EDIT, "KEY_EDIT" }, +- { KEY_SCROLLUP, "KEY_SCROLLUP" }, +- { KEY_SCROLLDOWN, "KEY_SCROLLDOWN" }, +- { KEY_KPLEFTPAREN, "KEY_KPLEFTPAREN" }, +- { KEY_KPRIGHTPAREN, "KEY_KPRIGHTPAREN" }, +- { KEY_NEW, "KEY_NEW" }, +- { KEY_REDO, "KEY_REDO" }, +- { KEY_F13, "KEY_F13" }, +- { KEY_F14, "KEY_F14" }, +- { KEY_F15, "KEY_F15" }, +- { KEY_F16, "KEY_F16" }, +- { KEY_F17, "KEY_F17" }, +- { KEY_F18, "KEY_F18" }, +- { KEY_F19, "KEY_F19" }, +- { KEY_F20, "KEY_F20" }, +- { KEY_F21, "KEY_F21" }, +- { KEY_F22, "KEY_F22" }, +- { KEY_F23, "KEY_F23" }, +- { KEY_F24, "KEY_F24" }, +- { KEY_PLAYCD, "KEY_PLAYCD" }, +- { KEY_PAUSECD, "KEY_PAUSECD" }, +- { KEY_PROG3, "KEY_PROG3" }, +- { KEY_PROG4, "KEY_PROG4" }, +- { KEY_DASHBOARD, "KEY_DASHBOARD" }, +- { KEY_SUSPEND, "KEY_SUSPEND" }, +- { KEY_CLOSE, "KEY_CLOSE" }, +- { KEY_PLAY, "KEY_PLAY" }, +- { KEY_FASTFORWARD, "KEY_FASTFORWARD" }, +- { KEY_BASSBOOST, "KEY_BASSBOOST" }, +- { KEY_PRINT, "KEY_PRINT" }, +- { KEY_HP, "KEY_HP" }, +- { KEY_CAMERA, "KEY_CAMERA" }, +- { KEY_SOUND, "KEY_SOUND" }, +- { KEY_QUESTION, "KEY_QUESTION" }, +- { KEY_EMAIL, "KEY_EMAIL" }, +- { KEY_CHAT, "KEY_CHAT" }, +- { KEY_SEARCH, "KEY_SEARCH" }, +- { KEY_CONNECT, "KEY_CONNECT" }, +- { KEY_FINANCE, "KEY_FINANCE" }, +- { KEY_SPORT, "KEY_SPORT" }, +- { KEY_SHOP, "KEY_SHOP" }, +- { KEY_ALTERASE, "KEY_ALTERASE" }, +- { KEY_CANCEL, "KEY_CANCEL" }, +- { KEY_BRIGHTNESSDOWN, "KEY_BRIGHTNESSDOWN" }, +- { KEY_BRIGHTNESSUP, "KEY_BRIGHTNESSUP" }, +- { KEY_MEDIA, "KEY_MEDIA" }, +- { KEY_SWITCHVIDEOMODE, "KEY_SWITCHVIDEOMODE" }, +- { KEY_KBDILLUMTOGGLE, "KEY_KBDILLUMTOGGLE" }, +- { KEY_KBDILLUMDOWN, "KEY_KBDILLUMDOWN" }, +- { KEY_KBDILLUMUP, "KEY_KBDILLUMUP" }, +- { KEY_SEND, "KEY_SEND" }, +- { KEY_REPLY, "KEY_REPLY" }, +- { KEY_FORWARDMAIL, "KEY_FORWARDMAIL" }, +- { KEY_SAVE, "KEY_SAVE" }, +- { KEY_DOCUMENTS, "KEY_DOCUMENTS" }, +- { KEY_BATTERY, "KEY_BATTERY" }, +- { KEY_BLUETOOTH, "KEY_BLUETOOTH" }, +- { KEY_WLAN, "KEY_WLAN" }, +- { KEY_UWB, "KEY_UWB" }, +- { KEY_UNKNOWN, "KEY_UNKNOWN" }, +- { KEY_VIDEO_NEXT, "KEY_VIDEO_NEXT" }, +- { KEY_VIDEO_PREV, "KEY_VIDEO_PREV" }, +- { KEY_BRIGHTNESS_CYCLE, "KEY_BRIGHTNESS_CYCLE" }, +- { KEY_BRIGHTNESS_ZERO, "KEY_BRIGHTNESS_ZERO" }, +- { KEY_DISPLAY_OFF, "KEY_DISPLAY_OFF" }, +- { KEY_WIMAX, "KEY_WIMAX" }, +- { KEY_RFKILL, "KEY_RFKILL" }, +- +- { KEY_OK, "KEY_OK" }, +- { KEY_SELECT, "KEY_SELECT" }, +- { KEY_GOTO, "KEY_GOTO" }, +- { KEY_CLEAR, "KEY_CLEAR" }, +- { KEY_POWER2, "KEY_POWER2" }, +- { KEY_OPTION, "KEY_OPTION" }, +- { KEY_INFO, "KEY_INFO" }, +- { KEY_TIME, "KEY_TIME" }, +- { KEY_VENDOR, "KEY_VENDOR" }, +- { KEY_ARCHIVE, "KEY_ARCHIVE" }, +- { KEY_PROGRAM, "KEY_PROGRAM" }, +- { KEY_CHANNEL, "KEY_CHANNEL" }, +- { KEY_FAVORITES, "KEY_FAVORITES" }, +- { KEY_EPG, "KEY_EPG" }, +- { KEY_PVR, "KEY_PVR" }, +- { KEY_MHP, "KEY_MHP" }, +- { KEY_LANGUAGE, "KEY_LANGUAGE" }, +- { KEY_TITLE, "KEY_TITLE" }, +- { KEY_SUBTITLE, "KEY_SUBTITLE" }, +- { KEY_ANGLE, "KEY_ANGLE" }, +- { KEY_ZOOM, "KEY_ZOOM" }, +- { KEY_MODE, "KEY_MODE" }, +- { KEY_KEYBOARD, "KEY_KEYBOARD" }, +- { KEY_SCREEN, "KEY_SCREEN" }, +- { KEY_PC, "KEY_PC" }, +- { KEY_TV, "KEY_TV" }, +- { KEY_TV2, "KEY_TV2" }, +- { KEY_VCR, "KEY_VCR" }, +- { KEY_VCR2, "KEY_VCR2" }, +- { KEY_SAT, "KEY_SAT" }, +- { KEY_SAT2, "KEY_SAT2" }, +- { KEY_CD, "KEY_CD" }, +- { KEY_TAPE, "KEY_TAPE" }, +- { KEY_RADIO, "KEY_RADIO" }, +- { KEY_TUNER, "KEY_TUNER" }, +- { KEY_PLAYER, "KEY_PLAYER" }, +- { KEY_TEXT, "KEY_TEXT" }, +- { KEY_DVD, "KEY_DVD" }, +- { KEY_AUX, "KEY_AUX" }, +- { KEY_MP3, "KEY_MP3" }, +- { KEY_AUDIO, "KEY_AUDIO" }, +- { KEY_VIDEO, "KEY_VIDEO" }, +- { KEY_DIRECTORY, "KEY_DIRECTORY" }, +- { KEY_LIST, "KEY_LIST" }, +- { KEY_MEMO, "KEY_MEMO" }, +- { KEY_CALENDAR, "KEY_CALENDAR" }, +- { KEY_RED, "KEY_RED" }, +- { KEY_GREEN, "KEY_GREEN" }, +- { KEY_YELLOW, "KEY_YELLOW" }, +- { KEY_BLUE, "KEY_BLUE" }, +- { KEY_CHANNELUP, "KEY_CHANNELUP" }, +- { KEY_CHANNELDOWN, "KEY_CHANNELDOWN" }, +- { KEY_FIRST, "KEY_FIRST" }, +- { KEY_LAST, "KEY_LAST" }, +- { KEY_AB, "KEY_AB" }, +- { KEY_PLAY, "KEY_PLAY" }, +- { KEY_RESTART, "KEY_RESTART" }, +- { KEY_SLOW, "KEY_SLOW" }, +- { KEY_SHUFFLE, "KEY_SHUFFLE" }, +- { KEY_FASTFORWARD, "KEY_FASTFORWARD" }, +- { KEY_PREVIOUS, "KEY_PREVIOUS" }, +- { KEY_NEXT, "KEY_NEXT" }, +- { KEY_DIGITS, "KEY_DIGITS" }, +- { KEY_TEEN, "KEY_TEEN" }, +- { KEY_TWEN, "KEY_TWEN" }, +- { KEY_BREAK, "KEY_BREAK" }, +- +- { 0, NULL }, +-}; +- +-/* +- * eLircInputDevice +- */ +- +-eLircInputDevice::eLircInputDevice(eRCDriver *driver) : eRCDevice("Lirc", driver), m_escape(false), m_unicode(0) +-{} +- +-eLircInputDevice::~eLircInputDevice() +-{} +- +-void eLircInputDevice::handleCode(long arg) +-{ +- const lircEvent* event = (const lircEvent*)arg; +- int code, flags; +- +- if (event->repeat == true) { +- flags = eRCKey::flagRepeat; +- } else if (event->release == true) { +- flags = eRCKey::flagBreak; +- } else { +- flags = eRCKey::flagMake; +- } +- +- code = translateKey(event->name); +- +- eDebug("LIRC name=%s code=%d flags=%d", event->name, code, flags); +- input->keyPressed(eRCKey(this, code, flags)); +-} +- +-const char *eLircInputDevice::getDescription() const +-{ +- return "Lirc"; +-} +- +-int eLircInputDevice::translateKey(const char* name) +-{ +- if (name==NULL) +- { +- eDebug("LIRC: translateKey ERROR"); +- return KEY_RESERVED; +- } +- +- for (int i=0;keyTable[i].name!=NULL;i++) +- { +- if (!strcmp(name, keyTable[i].name)) +- { +- printf("FOUND KEY CODE FOR %s: %04X\n", name, keyTable[i].code); +- return keyTable[i].code; +- } +- } +- +- eDebug("LIRC: unhandled key name: %s", name); +- return KEY_RESERVED; +-} +- +-/* +- * eLircInputDriver +- */ +- +-#define REPEATDELAY 100 // ms +-#define REPEATFREQ 100 // ms +-#define REPEATTIMEOUT 500 // ms +-#define RECONNECTDELAY 3000 // ms +- +-static bool fileReady(int FileDes, int TimeoutMs) +-{ +- fd_set set; +- struct timeval timeout; +- FD_ZERO(&set); +- FD_SET(FileDes, &set); +- if (TimeoutMs >= 0) { +- if (TimeoutMs < 100) +- TimeoutMs = 100; +- timeout.tv_sec = TimeoutMs / 1000; +- timeout.tv_usec = (TimeoutMs % 1000) * 1000; +- } +- return select(FD_SETSIZE, &set, NULL, NULL, (TimeoutMs >= 0) ? &timeout : NULL) > 0 && FD_ISSET(FileDes, &set); +-} +- +-static ssize_t safe_read(int filedes, void *buffer, size_t size) +-{ +- for (;;) { +-printf("AAread1\n"); +- ssize_t p = read(filedes, buffer, size); +-printf("AAread2\n"); +- if (p < 0 && errno == EINTR) { +- continue; +- } +- return p; +- } +-} +- +-void eLircInputDriver::pumpEvent(const lircEvent &event) +-{ +- keyPressed(event); +-} +- +-eLircInputDriver *eLircInputDriver::instance; +- +-bool eLircInputDriver::Connect(void) +-{ +- if ((f = socket(AF_UNIX, SOCK_STREAM, 0)) >= 0) { +- if (connect(f, (struct sockaddr *)&addr, sizeof(addr)) >= 0) +- return true; +- eDebug("Lirc: Connect to %s error !!!", addr.sun_path); +- close(f); +- f = -1; +- } +- else +- eDebug("Lirc: Connect to %s error !!!", addr.sun_path); +- +- return false; +-} +- +-eLircInputDriver::eLircInputDriver() : eRCDriver(eRCInput::getInstance()), m_pump(eApp, 1) +-{ +- ASSERT(instance == 0); +- instance = this; +- +- CONNECT(m_pump.recv_msg, eLircInputDriver::pumpEvent); +- +- addr.sun_family = AF_UNIX; +- strcpy(addr.sun_path, "/dev/lircd"); +- if (Connect()) { +- run(); +- return; +- } +- f = -1; +-} +- +-eLircInputDriver::~eLircInputDriver() +-{ +- instance = 0; +- +- int fh = f; +- f = -1; +- +- thread_stop = true; +- sendSignal(SIGINT); +- kill(); +- +- if (fh >= 0) +- close(fh); +-} +- +-void eLircInputDriver::thread() +-{ +- cTimeMs FirstTime; +- cTimeMs LastTime; +- char buf[LIRC_BUFFER_SIZE]; +- char LastKeyName[LIRC_KEY_BUF] = ""; +- bool repeat = false; +- int timeout = -1; +- lircEvent event; +- +- hasStarted(); +- thread_stop = false; +- +- while (!thread_stop && f>=0) { +- bool ready = fileReady(f, timeout); +- int ret = ready ? safe_read(f, buf, sizeof(buf)) : -1; +- +- if (ready && ret <= 0 ) { +- eDebug("ERROR: lircd connection broken, trying to reconnect every %.1f seconds", float(RECONNECTDELAY) / 1000); +- close(f); +- f = -1; +- while (!thread_stop && f < 0) { +- cCondWait::SleepMs(RECONNECTDELAY); +- if (Connect()) { +- eDebug("reconnected to lircd"); +- break; +- } +- } +- } +- +- if (ready && ret > 21) { +- int count; +- char KeyName[LIRC_KEY_BUF]; +- if (sscanf(buf, "%*x %x %29s", &count, KeyName) != 2) { // '29' in '%29s' is LIRC_KEY_BUF-1! +- eDebug("ERROR: unparseable lirc command: %s", buf); +- continue; +- } +- if (count == 0) { +- if (strcmp(KeyName, LastKeyName) == 0 && FirstTime.Elapsed() < REPEATDELAY) +- continue; // skip keys coming in too fast +- if (repeat) { +- event.name = LastKeyName; +- event.repeat = false; +- event.release = true; +- m_pump.send(event); +- } +- strcpy(LastKeyName, KeyName); +- repeat = false; +- FirstTime.Set(); +- timeout = -1; +- } +- else { +- if (LastTime.Elapsed() < REPEATFREQ) +- continue; // repeat function kicks in after a short delay (after last key instead of first key) +- if (FirstTime.Elapsed() < REPEATDELAY) +- continue; // skip keys coming in too fast (for count != 0 as well) +- repeat = true; +- timeout = REPEATDELAY; +- } +- LastTime.Set(); +- event.name = KeyName; +- event.repeat = repeat; +- event.release = false; +- m_pump.send(event); +- } +- else if (repeat) { // the last one was a repeat, so let's generate a release +- if (LastTime.Elapsed() >= REPEATTIMEOUT) { +- event.name = LastKeyName; +- event.repeat = false; +- event.release = true; +- m_pump.send(event); +- repeat = false; +- *LastKeyName = 0; +- timeout = -1; +- } +- } +- } +-} +- +-void eLircInputDriver::keyPressed(const lircEvent &event) +-{ +- if (!enabled || input->islocked()) +- return; +- +- std::list<eRCDevice*>::iterator i(listeners.begin()); +- while (i != listeners.end()) { +- (*i)->handleCode((long)&event); +- ++i; +- } +-} +- +-class eRCLircInit +-{ +-private: +- eLircInputDriver driver; +- eLircInputDevice device; +- +-public: +- eRCLircInit(): driver(), device(&driver) +- { +- } +-}; +- +-eAutoInitP0<eRCLircInit> init_rcLirc(eAutoInitNumbers::rc+1, "Lirc RC Driver"); +diff -ruN Enigma2PC/lib/driver/rclirc.h Enigma2PC-old/lib/driver/rclirc.h +--- Enigma2PC/lib/driver/rclirc.h 2011-07-24 10:58:27.000000000 +0400 ++++ Enigma2PC-old/lib/driver/rclirc.h 1970-01-01 03:00:00.000000000 +0300 +@@ -1,56 +0,0 @@ +-#ifndef __lib_driver_rclirc_h +-#define __lib_driver_rclirc_h +- +-#include <sys/un.h> +-#include <lib/driver/rc.h> +-#include <lib/base/thread.h> +-#include <lib/base/message.h> +- +-struct tKey { +- uint16_t code; +- const char *name; +-}; +- +-struct lircEvent { +- const char *name; +- bool repeat; +- bool release; +-}; +- +-class eLircInputDevice : public eRCDevice +-{ +-private: +- bool m_escape; +- unsigned int m_unicode; +- int translateKey(const char* name); +- +-public: +- eLircInputDevice(eRCDriver *driver); +- ~eLircInputDevice(); +- +- virtual void handleCode(long arg); +- virtual const char *getDescription() const; +-}; +- +-class eLircInputDriver : public eRCDriver, public eThread +-{ +-private: +- enum { LIRC_KEY_BUF = 30, LIRC_BUFFER_SIZE = 128 }; +- static eLircInputDriver *instance; +- eFixedMessagePump<lircEvent> m_pump; +- void pumpEvent(const lircEvent &keyEvent); +- int f; +- struct sockaddr_un addr; +- virtual void thread(); +- bool thread_stop; +- bool Connect(void); +- +-public: +- eLircInputDriver(); +- ~eLircInputDriver(); +- +- static eLircInputDriver *getInstance() { return instance; } +- void keyPressed(const lircEvent &keyEvent); +-}; +- +-#endif +diff -ruN Enigma2PC/lib/gdi/gxlibdc.cpp Enigma2PC-old/lib/gdi/gxlibdc.cpp +--- Enigma2PC/lib/gdi/gxlibdc.cpp 2011-07-24 10:58:27.000000000 +0400 ++++ Enigma2PC-old/lib/gdi/gxlibdc.cpp 2011-07-23 09:48:17.000000000 +0400 +@@ -149,7 +149,7 @@ + void gXlibDC::keyEvent(const XKeyEvent &event) + { + eXlibInputDriver *driver = eXlibInputDriver::getInstance(); +- ++xineLib->getVideoFrameRate(); + eDebug("SDL Key %s: key=%d", (event.type == KeyPress) ? "Down" : "Up", event.keycode); + + if (driver) + |