Are there any plans to make this excellent plugin compatible with vdr-2.3.1 please
Rgds
Mike
Are there any plans to make this excellent plugin compatible with vdr-2.3.1 please
Rgds
Mike
Hi Mike,
please provide the compiler error. I don't have 2.3.1 installed.
BR,
T.
Thanks for the quick response T.
I've attached a copy of the error and also of the editted VDR HISTORY file which you'll need to read to see the origin odf the problem.
I was able to fix some errors related to Channels by fiddling. (Im not a programmer) so I've also attached my amended copy of responsevdrdir.c.
Fingers crossed
Mike
Ok. Seems that the relevant part from the VDR history is:
ZitatAlles anzeigen+ Instead of directly accessing the global variables Timers, Channels or Recordings,
they need to set up a cStateKey variable and call the proper getter function,
as in
cStateKey StateKey;
if (const cTimers *Timers = cTimers::GetTimersRead(StateKey)) {
// access the timers
StateKey.Remove();
}
and
cStateKey StateKey;
if (cTimers *Timers = cTimers::GetTimersWrite(StateKey)) {
// access the timers
StateKey.Remove();
}
See timers.h, thread.h and tools.h for details on this new locking mechanism.
+ There are convenience macros for easily accessing these lists without having
to explicitly set up a cStateKey and calling its Remove() function. These macros
have the form LOCK_*_READ/WRITE (with '*' being TIMERS, CHANNELS, SCHEDULES or
RECORDINGS). Simply put such a macro before the point where you need to access
the respective list, and there will be a pointer named Timers, Channels, Schedules
or Recordings, respectively, which is valid until the end of the current block.
I need to understand, how to use the "convenience macros", since the Plugin cannot access the recordings direly anymore. The following is not working anymore.
I am open for any hint / support, how to iterate over the recordings.
BR,
T.
Hi T
The only hint/help I can offer is if you have a look here
https://github.com/flensrocker…h/blob/master/recsearch.c
the recsearch plugin has been modified using similar stuff to be compatible with vdr-2.3.1
Maybe you could have a word with Lars Hanisch.
Mike
Thanks. Got a clue now. But it is more than just the recordings. Also the API to timers and schedules has changed...;-(
Need so time to adjust.
BR,
T.
Good Luck.
Happy to test.
Regards
Mike
Thanks T.
Have downloaded, compiled and tested gthe new version on "live tv" and "recordings" with no problems
Haven't tried media yet.
Well done
Merry Christmas
Mike
Hi Mike,
Thanks for the feedback. Seems that the Plugin is now working with VDR > 2.3.0.
Merry Christmas,
T.
How can we find this version? The GIT ist oldstable.
The GIT ist oldstable.
The changes are in git, but the git web interface seems to be out of sync.
BR,
T.
Sorry, I do try to build a vdr 2.3.3 currently.
I do load the smarttvweb plugin via:
git clone https://projects.vdr-developer…vdr-plugin-smarttvweb.git
Unfortunately that seems to get me the version which does not yet have the changes for vdr >=2.3.
So what is the correct git repository to clone?
Gruß Michael
Sorry, I have to correct myself. The changes with checks on APIVERSNUM > 20300 are in . So it looks like I got the correct version.
But still compile errors:
g++ -g -O3 -Wall -Werror=overloaded-virtual -Wno-parentheses -fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I/opt/vdr/src/vdr-2.3.3/include -c -DPLUGIN_NAME_I18N='"smarttvweb"' -o smarttvfactory.o smarttvfactory.c
smarttvfactory.c: In Elementfunktion »cRecFolder* SmartTvServer::GetRecDb()«:
smarttvfactory.c:959:18: Fehler: »Recordings« wurde in diesem Gültigkeitsbereich nicht definiert
bool changed = Recordings->StateChanged(mRecState);
^~~~~~~~~~
smarttvfactory.c: In Elementfunktion »void SmartTvServer::CreateRecDb()«:
smarttvfactory.c:973:27: Fehler: »Recordings« wurde in diesem Gültigkeitsbereich nicht definiert
cRecording *recording = Recordings.First();
^~~~~~~~~~
smarttvfactory.c: In Elementfunktion »std::__cxx11::string SmartTvServer::processNestedItemList(std::__cxx11::string, cList<cNestedItem>*, std::vector<cCmd*>*)«:
smarttvfactory.c:1153:37: Warnung: Format »%d« erwartet Argumenttyp »int«, aber Argument 4 hat Typ »std::vector<cCmd*>::size_type {aka long unsigned int}« [-Wformat=]
(pref + itm->mTitle).c_str());
^
Makefile:66: die Regel für Ziel „smarttvfactory.o“ scheiterte
make: *** [smarttvfactory.o] Fehler 1
[michaelc@satip smarttvweb]$
[michaelc@satip smarttvweb]$ vi smarttvfactory.
[michaelc@satip smarttvweb]$ vi smarttvfactory.c
[michaelc@satip smarttvweb]$ make
g++ -g -O3 -Wall -Werror=overloaded-virtual -Wno-parentheses -fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I/opt/vdr/src/vdr-2.3.3/include -c -DPLUGIN_NAME_I18N='"smarttvweb"' -o smarttvfactory.o smarttvfactory.c
smarttvfactory.c: In Elementfunktion »cRecFolder* SmartTvServer::GetRecDb()«:
smarttvfactory.c:959:18: Fehler: »Recordings« wurde in diesem Gültigkeitsbereich nicht definiert
bool changed = Recordings.StateChanged(mRecState);
^~~~~~~~~~
smarttvfactory.c: In Elementfunktion »void SmartTvServer::CreateRecDb()«:
smarttvfactory.c:973:27: Fehler: »Recordings« wurde in diesem Gültigkeitsbereich nicht definiert
cRecording *recording = Recordings.First();
^~~~~~~~~~
smarttvfactory.c: In Elementfunktion »std::__cxx11::string SmartTvServer::processNestedItemList(std::__cxx11::string, cList<cNestedItem>*, std::vector<cCmd*>*)«:
smarttvfactory.c:1153:37: Warnung: Format »%d« erwartet Argumenttyp »int«, aber Argument 4 hat Typ »std::vector<cCmd*>::size_type {aka long unsigned int}« [-Wformat=]
(pref + itm->mTitle).c_str());
^
Makefile:66: die Regel für Ziel „smarttvfactory.o“ scheiterte
Any hints?
Habe gerade eine neue Version committed. Bitte noch einmal pullen und probieren.
T.
Danke! Damit klappts (fast )
responsememblk.c:2263:18: Fehler: L-Wert »std::basic_ostream<char>« kann nicht mit »std::basic_ostream<char>&&« verbunden werden
*(mLog->log()) << " Ownhost= " << own_host << endl;
~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
Wenn das bei dir kompiliert, dann gehe ich davon aus, dass wir unterschiedliche C++-Kompiler und Linux Versionen einsetzen.
Bei mir:
[michaelc@satip smarttvweb]$ cc --version
cc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
und
[michaelc@satip smarttvweb]$ uname -a
Linux satip.fritz.box 4.10.5-200.fc25.x86_64 #1 SMP Wed Mar 22 20:37:08 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
also Fedora 25 mit aktuellen Patches.
Wenn ich die Zeile auskommentiere (ist ja wohl nur ein logfile eintrag) dann kompiliert das Plugin. Testen konnte ich es noch nicht, weil ich noch mit eniem anderen Plugin (vdrmanager) am kämpfen bin.
Gruß Michael
Alles anzeigenDanke! Damit klappts (fast )
responsememblk.c:2263:18: Fehler: L-Wert »std::basic_ostream« kann nicht mit »std::basic_ostream&&« verbunden werden
*(mLog->log()) << " Ownhost= " << own_host << endl;
~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
Bei mir klapps ganz. Ich nutze Ubuntu 16.04.
Die Zeile ist nicht wichtig, also kannst Du sie einfach löschen. Vielleicht geht es dann.
Grüße,
T.
Danke!
Inzwischen hab ich alle für mich notwendigen Plugins am laufen und kann bestätigen, dass smarttvweb mit vdr-2.3.3 bei mir läuft.
Gruß
Michael
Hallo,
Mit nem aktuellen gcc klappt das Compilieren leider nicht mehr:
make all
c++ -g -O3 -Wall -Werror=overloaded-virtual -Wno-parentheses -g -ggdb -O0 -fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -std=c++11 -c -DUSE_ZAPCOCKPIT -DUSE_MENUSELECTION -DUSE_MENUORG -DUSE_RESUMERESET -DUSE_NETWORKNAME -DPLUGIN_NAME_I18N='"smarttvweb"' -o responsememblk.o responsememblk.c
responsememblk.c: In member function ‘int cResponseMemBlk::sendMp4Covr()’:
responsememblk.c:456:8: warning: unused variable ‘f’ [-Wunused-variable]
char f[400];
^
responsememblk.c: In member function ‘int cResponseMemBlk::sendDir(stat*)’:
responsememblk.c:746:64: warning: field width specifier ‘*’ expects argument of type ‘int’, but argument 4 has type ‘size_t {aka long unsigned int}’ [-Wformat=]
snprintf(f, sizeof(f), "%*s", 32 - strlen(de->d_name), "");
~~~~~~~~~~~~~~~~~~~~~~~ ^
responsememblk.c: In member function ‘void cResponseMemBlk::sendTimersXml()’:
responsememblk.c:1436:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (uint i =0; i< s_timers.Size(); i++) {
~^~~~~~~~~~~~~~~~~
responsememblk.c: In member function ‘int cResponseMemBlk::sendBmlInstHtml()’:
responsememblk.c:2263:34: error: no match for ‘operator<<’ (operand types are ‘std::basic_ostream<char>’ and ‘std::stringstream {aka std::__cxx11::basic_stringstream<char>}’)
*(mLog->log()) << " Ownhost= " << own_host << endl;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
responsememblk.c:2263:34: note: candidate: operator<<(int, int) <built-in>
responsememblk.c:2263:34: note: no known conversion for argument 2 from ‘std::stringstream {aka std::__cxx11::basic_stringstream<char>}’ to ‘int’
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/iostream:39:0,
from log.h:27,
from httpresource.h:31,
from responsememblk.c:24:
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/ostream:108:7: note: candidate: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ostream_type& (*)(std::basic_ostream<_CharT, _Traits>::__ostream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]
operator<<(__ostream_type& (*__pf)(__ostream_type&))
^~~~~~~~
...
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/ostream:519:5: note: template argument deduction/substitution failed:
responsememblk.c:2263:37: note: cannot convert ‘own_host’ (type ‘std::stringstream {aka std::__cxx11::basic_stringstream<char>}’) to type ‘unsigned char’
*(mLog->log()) << " Ownhost= " << own_host << endl;
^~~~~~~~
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/iostream:39:0,
from log.h:27,
from httpresource.h:31,
from responsememblk.c:24:
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/ostream:539:5: note: candidate: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const _CharT*)
operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s)
^~~~~~~~
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/ostream:539:5: note: template argument deduction/substitution failed:
responsememblk.c:2263:37: note: mismatched types ‘const _CharT*’ and ‘std::__cxx11::basic_stringstream<char>’
*(mLog->log()) << " Ownhost= " << own_host << endl;
^~~~~~~~
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/ostream:693:0,
from /usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/iostream:39,
from log.h:27,
from httpresource.h:31,
from responsememblk.c:24:
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/bits/ostream.tcc:321:5: note: candidate: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const char*)
operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s)
^~~~~~~~
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/bits/ostream.tcc:321:5: note: template argument deduction/substitution failed:
responsememblk.c:2263:37: note: cannot convert ‘own_host’ (type ‘std::stringstream {aka std::__cxx11::basic_stringstream<char>}’) to type ‘const char*’
*(mLog->log()) << " Ownhost= " << own_host << endl;
^~~~~~~~
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/iostream:39:0,
from log.h:27,
from httpresource.h:31,
from responsememblk.c:24:
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/ostream:556:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const char*)
operator<<(basic_ostream<char, _Traits>& __out, const char* __s)
^~~~~~~~
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/ostream:556:5: note: template argument deduction/substitution failed:
responsememblk.c:2263:37: note: cannot convert ‘own_host’ (type ‘std::stringstream {aka std::__cxx11::basic_stringstream<char>}’) to type ‘const char*’
*(mLog->log()) << " Ownhost= " << own_host << endl;
^~~~~~~~
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/iostream:39:0,
from log.h:27,
from httpresource.h:31,
from responsememblk.c:24:
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/ostream:569:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const signed char*)
operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s)
^~~~~~~~
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/ostream:569:5: note: template argument deduction/substitution failed:
responsememblk.c:2263:37: note: cannot convert ‘own_host’ (type ‘std::stringstream {aka std::__cxx11::basic_stringstream<char>}’) to type ‘const signed char*’
*(mLog->log()) << " Ownhost= " << own_host << endl;
^~~~~~~~
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/iostream:39:0,
from log.h:27,
from httpresource.h:31,
from responsememblk.c:24:
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/ostream:574:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const unsigned char*)
operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s)
^~~~~~~~
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/ostream:574:5: note: template argument deduction/substitution failed:
responsememblk.c:2263:37: note: cannot convert ‘own_host’ (type ‘std::stringstream {aka std::__cxx11::basic_stringstream<char>}’) to type ‘const unsigned char*’
*(mLog->log()) << " Ownhost= " << own_host << endl;
^~~~~~~~
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/iostream:39:0,
from log.h:27,
from httpresource.h:31,
from responsememblk.c:24:
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/ostream:682:5: note: candidate: template<class _Ostream, class _Tp> typename std::enable_if<std::__and_<std::__not_<std::is_lvalue_reference<_Tp> >, std::__is_convertible_to_basic_ostream<_Ostream>, std::__is_insertable<typename std::__is_convertible_to_basic_ostream<_Tp>::__ostream_type, const _Tp&, void> >::value, typename std::__is_convertible_to_basic_ostream<_Tp>::__ostream_type>::type std::operator<<(_Ostream&&, const _Tp&)
operator<<(_Ostream&& __os, const _Tp& __x)
^~~~~~~~
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/ostream:682:5: note: template argument deduction/substitution failed:
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/ostream: In substitution of ‘template<class _Ostream, class _Tp> typename std::enable_if<std::__and_<std::__not_<std::is_lvalue_reference<_Tp> >, std::__is_convertible_to_basic_ostream<_Ostream>, std::__is_insertable<typename std::__is_convertible_to_basic_ostream<_Tp>::__ostream_type, const _Tp&, void> >::value, typename std::__is_convertible_to_basic_ostream<_Tp>::__ostream_type>::type std::operator<<(_Ostream&&, const _Tp&) [with _Ostream = std::basic_ostream<char>&; _Tp = std::__cxx11::basic_stringstream<char>]’:
responsememblk.c:2263:37: required from here
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/g++-v7/ostream:682:5: error: no type named ‘type’ in ‘struct std::enable_if<false, std::basic_ostream<char>&>’
make: *** [Makefile:66: responsememblk.o] Error 1
Hi Helmut,
probier mal..
Nur compile fix, ich hab nicht getestet.
Danke, zumindest compilieren tuts prima
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!