Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge branch 'master' of https://github.com/xbmc/xbmc into insufficie…

…nt-video-buffer
  • Loading branch information...
commit fdedf13641acc09a7af983d0fa1f78f72ec2e8ad 2 parents 3f148da + 8a2d157
zewt authored
Showing with 20,670 additions and 7,040 deletions.
  1. +79 −22 .gitignore
  2. +109 −31 Makefile.in
  3. +7 −3 Makefile.include.in
  4. +791 −454 XBMC-ATV2.xcodeproj/project.pbxproj
  5. +811 −464 XBMC-IOS.xcodeproj/project.pbxproj
  6. +795 −484 XBMC.xcodeproj/project.pbxproj
  7. +263 −0 addons/library.xbmc.addon/dlfcn-win32.cpp
  8. +46 −0 addons/library.xbmc.addon/dlfcn-win32.h
  9. +368 −0 addons/library.xbmc.addon/libXBMC_addon.h
  10. +309 −0 addons/library.xbmc.gui/libXBMC_gui.h
  11. +169 −0 addons/library.xbmc.pvr/libXBMC_pvr.h
  12. +2 −2 addons/metadata.themoviedb.org/addon.xml
  13. +82 −19 addons/repository.xbmc.org/addon.xml
  14. +47 −10 addons/screensaver.rsxs.euphoria/addon.xml
  15. +49 −9 addons/screensaver.rsxs.plasma/addon.xml
  16. +46 −8 addons/screensaver.rsxs.solarwinds/addon.xml
  17. +51 −11 addons/screensaver.xbmc.builtin.black/addon.xml
  18. +53 −13 addons/screensaver.xbmc.builtin.dim/addon.xml
  19. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Albanian/strings.po
  20. +7 −15 addons/screensaver.xbmc.builtin.dim/resources/language/Bulgarian/strings.po
  21. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Catalan/strings.po
  22. +6 −14 addons/screensaver.xbmc.builtin.dim/resources/language/Chinese (Simple)/strings.po
  23. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Chinese (Traditional)/strings.po
  24. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Croatian/strings.po
  25. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Czech/strings.po
  26. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Danish/strings.po
  27. +6 −14 addons/screensaver.xbmc.builtin.dim/resources/language/Dutch/strings.po
  28. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/English (US)/strings.po
  29. +1 −9 addons/screensaver.xbmc.builtin.dim/resources/language/English/strings.po
  30. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Estonian/strings.po
  31. +6 −14 addons/screensaver.xbmc.builtin.dim/resources/language/Finnish/strings.po
  32. +6 −14 addons/screensaver.xbmc.builtin.dim/resources/language/French/strings.po
  33. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Galician/strings.po
  34. +6 −14 addons/screensaver.xbmc.builtin.dim/resources/language/German/strings.po
  35. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Greek/strings.po
  36. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Hebrew/strings.po
  37. +6 −14 addons/screensaver.xbmc.builtin.dim/resources/language/Hungarian/strings.po
  38. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Icelandic/strings.po
  39. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Italian/strings.po
  40. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Japanese/strings.po
  41. +7 −15 addons/screensaver.xbmc.builtin.dim/resources/language/Korean/strings.po
  42. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Lithuanian/strings.po
  43. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Norwegian/strings.po
  44. +6 −14 addons/screensaver.xbmc.builtin.dim/resources/language/Polish/strings.po
  45. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Portuguese (Brazil)/strings.po
  46. +6 −14 addons/screensaver.xbmc.builtin.dim/resources/language/Portuguese/strings.po
  47. +6 −14 addons/screensaver.xbmc.builtin.dim/resources/language/Romanian/strings.po
  48. +6 −14 addons/screensaver.xbmc.builtin.dim/resources/language/Russian/strings.po
  49. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Slovak/strings.po
  50. +6 −14 addons/screensaver.xbmc.builtin.dim/resources/language/Slovenian/strings.po
  51. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Spanish (Mexico)/strings.po
  52. +6 −14 addons/screensaver.xbmc.builtin.dim/resources/language/Spanish/strings.po
  53. +7 −15 addons/screensaver.xbmc.builtin.dim/resources/language/Swedish/strings.po
  54. +22 −0 addons/screensaver.xbmc.builtin.dim/resources/language/Ukrainian/strings.po
  55. +54 −16 addons/screensaver.xbmc.builtin.slideshow/addon.xml
  56. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Afrikaans/strings.po
  57. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Albanian/strings.po
  58. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Basque/strings.po
  59. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Bulgarian/strings.po
  60. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Catalan/strings.po
  61. +7 −15 addons/screensaver.xbmc.builtin.slideshow/resources/language/Chinese (Simple)/strings.po
  62. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Chinese (Traditional)/strings.po
  63. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Croatian/strings.po
  64. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Czech/strings.po
  65. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Danish/strings.po
  66. +7 −15 addons/screensaver.xbmc.builtin.slideshow/resources/language/Dutch/strings.po
  67. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/English (US)/strings.po
  68. +1 −9 addons/screensaver.xbmc.builtin.slideshow/resources/language/English/strings.po
  69. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Estonian/strings.po
  70. +6 −14 addons/screensaver.xbmc.builtin.slideshow/resources/language/Finnish/strings.po
  71. +7 −15 addons/screensaver.xbmc.builtin.slideshow/resources/language/French/strings.po
  72. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Galician/strings.po
  73. +7 −15 addons/screensaver.xbmc.builtin.slideshow/resources/language/German/strings.po
  74. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Greek/strings.po
  75. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Hebrew/strings.po
  76. +7 −15 addons/screensaver.xbmc.builtin.slideshow/resources/language/Hungarian/strings.po
  77. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Icelandic/strings.po
  78. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Italian/strings.po
  79. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Japanese/strings.po
  80. +8 −16 addons/screensaver.xbmc.builtin.slideshow/resources/language/Korean/strings.po
  81. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Lithuanian/strings.po
  82. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Norwegian/strings.po
  83. +7 −15 addons/screensaver.xbmc.builtin.slideshow/resources/language/Polish/strings.po
  84. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Portuguese (Brazil)/strings.po
  85. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Portuguese/strings.po
  86. +7 −15 addons/screensaver.xbmc.builtin.slideshow/resources/language/Romanian/strings.po
  87. +11 −19 addons/screensaver.xbmc.builtin.slideshow/resources/language/Russian/strings.po
  88. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Serbian (Cyrillic)/strings.po
  89. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Serbian/strings.po
  90. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Slovak/strings.po
  91. +6 −14 addons/screensaver.xbmc.builtin.slideshow/resources/language/Slovenian/strings.po
  92. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Spanish (Mexico)/strings.po
  93. +6 −14 addons/screensaver.xbmc.builtin.slideshow/resources/language/Spanish/strings.po
  94. +6 −14 addons/screensaver.xbmc.builtin.slideshow/resources/language/Swedish/strings.po
  95. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Thai/strings.po
  96. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Turkish/strings.po
  97. +42 −0 addons/screensaver.xbmc.builtin.slideshow/resources/language/Ukrainian/strings.po
  98. +9 −1 addons/skin.confluence/720p/DialogBusy.xml
  99. +35 −3 addons/skin.confluence/720p/DialogButtonMenu.xml
  100. +48 −0 addons/skin.confluence/720p/DialogExtendedProgressBar.xml
  101. +560 −0 addons/skin.confluence/720p/DialogPVRChannelManager.xml
  102. +359 −0 addons/skin.confluence/720p/DialogPVRChannelsOSD.xml
  103. +433 −0 addons/skin.confluence/720p/DialogPVRGroupManager.xml
  104. +226 −0 addons/skin.confluence/720p/DialogPVRGuideInfo.xml
  105. +253 −0 addons/skin.confluence/720p/DialogPVRGuideOSD.xml
  106. +456 −0 addons/skin.confluence/720p/DialogPVRGuideSearch.xml
  107. +267 −0 addons/skin.confluence/720p/DialogPVRRecordingInfo.xml
  108. +155 −0 addons/skin.confluence/720p/DialogPVRTimerSettings.xml
  109. +364 −90 addons/skin.confluence/720p/Home.xml
  110. +98 −1 addons/skin.confluence/720p/IncludesBackgroundBuilding.xml
  111. +42 −2 addons/skin.confluence/720p/IncludesHomeMenuItems.xml
  112. +62 −62 addons/skin.confluence/720p/MusicOSD.xml
  113. +2 −2 addons/skin.confluence/720p/MusicVisualisation.xml
  114. +258 −0 addons/skin.confluence/720p/MyPVR.xml
  115. +145 −4 addons/skin.confluence/720p/PlayerControls.xml
  116. +12 −6 addons/skin.confluence/720p/Settings.xml
  117. +15 −0 addons/skin.confluence/720p/SettingsSystemInfo.xml
  118. +320 −8 addons/skin.confluence/720p/VideoFullScreen.xml
  119. +239 −38 addons/skin.confluence/720p/VideoOSD.xml
  120. +2,392 −0 addons/skin.confluence/720p/ViewsPVR.xml
  121. +1 −0  addons/skin.confluence/720p/defaults.xml
  122. +81 −1 addons/skin.confluence/720p/includes.xml
  123. +87 −14 addons/skin.confluence/addon.xml
  124. BIN  addons/skin.confluence/backgrounds/tv.jpg
  125. +56 −120 addons/skin.confluence/language/Afrikaans/strings.po
  126. +56 −120 addons/skin.confluence/language/Arabic/strings.po
  127. +151 −215 addons/skin.confluence/language/Bulgarian/strings.po
  128. +74 −138 addons/skin.confluence/language/Catalan/strings.po
  129. +62 −126 addons/skin.confluence/language/Chinese (Simple)/strings.po
  130. +81 −145 addons/skin.confluence/language/Chinese (Traditional)/strings.po
  131. +542 −0 addons/skin.confluence/language/Croatian/strings.po
  132. +107 −171 addons/skin.confluence/language/Czech/strings.po
  133. +106 −170 addons/skin.confluence/language/Danish/strings.po
  134. +62 −128 addons/skin.confluence/language/Dutch/strings.po
  135. +542 −0 addons/skin.confluence/language/English (US)/strings.po
  136. +79 −18 addons/skin.confluence/language/English/strings.po
  137. +542 −0 addons/skin.confluence/language/Estonian/strings.po
  138. +62 −126 addons/skin.confluence/language/Finnish/strings.po
  139. +116 −180 addons/skin.confluence/language/French/strings.po
  140. +542 −0 addons/skin.confluence/language/Galician/strings.po
  141. +112 −177 addons/skin.confluence/language/German/strings.po
  142. +68 −133 addons/skin.confluence/language/Greek/strings.po
  143. +542 −0 addons/skin.confluence/language/Hebrew/strings.po
  144. +76 −140 addons/skin.confluence/language/Hungarian/strings.po
  145. +62 −126 addons/skin.confluence/language/Icelandic/strings.po
  146. +63 −127 addons/skin.confluence/language/Italian/strings.po
  147. +70 −134 addons/skin.confluence/language/Japanese/strings.po
  148. +75 −139 addons/skin.confluence/language/Korean/strings.po
  149. +135 −199 addons/skin.confluence/language/Lithuanian/strings.po
  150. +92 −156 addons/skin.confluence/language/Norwegian/strings.po
  151. +64 −128 addons/skin.confluence/language/Polish/strings.po
  152. +64 −128 addons/skin.confluence/language/Portuguese (Brazil)/strings.po
  153. +131 −195 addons/skin.confluence/language/Portuguese/strings.po
  154. +62 −126 addons/skin.confluence/language/Romanian/strings.po
  155. +75 −141 addons/skin.confluence/language/Russian/strings.po
  156. +57 −121 addons/skin.confluence/language/Serbian (Cyrillic)/strings.po
  157. +57 −121 addons/skin.confluence/language/Serbian/strings.po
  158. +65 −129 addons/skin.confluence/language/Slovak/strings.po
  159. +58 −124 addons/skin.confluence/language/Slovenian/strings.po
  160. +542 −0 addons/skin.confluence/language/Spanish (Mexico)/strings.po
  161. +75 −139 addons/skin.confluence/language/Spanish/strings.po
  162. +74 −140 addons/skin.confluence/language/Swedish/strings.po
  163. +542 −0 addons/skin.confluence/language/Thai/strings.po
  164. +63 −127 addons/skin.confluence/language/Turkish/strings.po
  165. +59 −123 addons/skin.confluence/language/Ukrainian/strings.po
  166. +542 −0 addons/skin.confluence/language/Vietnamese/strings.po
  167. BIN  addons/skin.confluence/media/OSDChannelDownFO.png
  168. BIN  addons/skin.confluence/media/OSDChannelDownNF.png
  169. BIN  addons/skin.confluence/media/OSDChannelListFO.png
  170. BIN  addons/skin.confluence/media/OSDChannelListNF.png
  171. BIN  addons/skin.confluence/media/OSDChannelUPFO.png
  172. BIN  addons/skin.confluence/media/OSDChannelUPNF.png
  173. BIN  addons/skin.confluence/media/OSDRecordOff.png
  174. 0  addons/skin.confluence/media/{OSDRecordFO.png → OSDRecordOffFO.png}
  175. 0  addons/skin.confluence/media/{OSDRecordNF.png → OSDRecordOffNF.png}
  176. 0  addons/skin.confluence/media/{OSDRecord2.png → OSDRecordOnFO.png}
  177. BIN  addons/skin.confluence/media/OSDRecordOnNF.png
  178. BIN  addons/skin.confluence/media/OSDTeleTextFO.png
  179. BIN  addons/skin.confluence/media/OSDTeleTextNF.png
  180. BIN  addons/skin.confluence/media/OSDepgFO.png
  181. BIN  addons/skin.confluence/media/OSDepgNF.png
  182. BIN  addons/skin.confluence/media/PVR-HasTimer.png
  183. BIN  addons/skin.confluence/media/PVR-IsRecording.png
  184. BIN  addons/skin.confluence/media/StackNF.png
  185. BIN  addons/skin.confluence/media/epg-genres/0.png
  186. BIN  addons/skin.confluence/media/epg-genres/112.png
  187. BIN  addons/skin.confluence/media/epg-genres/128.png
  188. BIN  addons/skin.confluence/media/epg-genres/144.png
  189. BIN  addons/skin.confluence/media/epg-genres/16.png
  190. BIN  addons/skin.confluence/media/epg-genres/160.png
  191. BIN  addons/skin.confluence/media/epg-genres/176.png
  192. BIN  addons/skin.confluence/media/epg-genres/192.png
  193. BIN  addons/skin.confluence/media/epg-genres/208.png
  194. BIN  addons/skin.confluence/media/epg-genres/224.png
  195. BIN  addons/skin.confluence/media/epg-genres/240.png
  196. BIN  addons/skin.confluence/media/epg-genres/32.png
  197. BIN  addons/skin.confluence/media/epg-genres/48.png
  198. BIN  addons/skin.confluence/media/epg-genres/64.png
  199. BIN  addons/skin.confluence/media/epg-genres/80.png
  200. BIN  addons/skin.confluence/media/epg-genres/96.png
  201. +18 −0 addons/skin.confluence/media/epg-genres/genre-numbers.txt
  202. BIN  addons/skin.confluence/media/gradient.png
  203. BIN  addons/skin.confluence/media/home-power-inhibit-FO.png
  204. BIN  addons/skin.confluence/media/home-power-inhibit.png
  205. +1 −1  addons/skin.touched
  206. +53 −26 addons/visualization.dxspectrum/addon.xml
  207. +78 −0 addons/visualization.dxspectrum/resources/language/Afrikaans/strings.po
  208. +78 −0 addons/visualization.dxspectrum/resources/language/Basque/strings.po
  209. +19 −27 addons/visualization.dxspectrum/resources/language/Bulgarian/strings.po
  210. +78 −0 addons/visualization.dxspectrum/resources/language/Catalan/strings.po
  211. +6 −14 addons/visualization.dxspectrum/resources/language/Chinese (Simple)/strings.po
  212. +78 −0 addons/visualization.dxspectrum/resources/language/Croatian/strings.po
  213. +78 −0 addons/visualization.dxspectrum/resources/language/Czech/strings.po
  214. +78 −0 addons/visualization.dxspectrum/resources/language/Danish/strings.po
  215. +6 −14 addons/visualization.dxspectrum/resources/language/Dutch/strings.po
  216. +78 −0 addons/visualization.dxspectrum/resources/language/English (US)/strings.po
  217. +1 −9 addons/visualization.dxspectrum/resources/language/English/strings.po
  218. +78 −0 addons/visualization.dxspectrum/resources/language/Esperanto/strings.po
  219. +78 −0 addons/visualization.dxspectrum/resources/language/Estonian/strings.po
  220. +6 −14 addons/visualization.dxspectrum/resources/language/Finnish/strings.po
Sorry, we could not display the entire diff because too many files (3,882) changed.
101 .gitignore
View
@@ -7,6 +7,7 @@ testMain
# Eclipse
*.project
*.cproject
+.classpath
# generated files etc
config.cache
@@ -28,6 +29,7 @@ config.log
*.orig
*.bak
*.apk
+*.class
# Windows specific generated files
*.exp
@@ -41,6 +43,7 @@ config.log
*.vcxproj.*.user
*.vcxproj.user
*.obj
+*.idb
*ReSharper*
*.idb
@@ -65,6 +68,11 @@ config.log
.libs/
.deps/
+# Eclipse project files. Not needed as they are generated in two clicks if needed.
+.settings
+.project
+.cproject
+
# /
/.dummy
/.dummy.in
@@ -75,6 +83,7 @@ config.log
/build-aux/config.guess
/build-aux/config.sub
/build-aux/install-sh
+/build-aux/ltmain.sh
/build-aux/missing
/build-aux/ltmain.sh
/autotools
@@ -89,6 +98,7 @@ config.log
/configure
/xbmc/stamp-h1
/xbmc.bin
+/xbmc-test
/xbmc-xrandr
/git_revision.h
/libtool
@@ -113,6 +123,7 @@ config.log
/addons/visualization.waveform/Waveform_win32.vis
/addons/visualization.itunes/iTunes.mvis
/addons/script.module.pil/
+/addons/pvr.*
# /xbmc/android
/xbmc/android/Makefile
@@ -137,6 +148,9 @@ config.log
/xbmc/peripherals/bus/Makefile
/xbmc/peripherals/devices/Makefile
+# /xbmc/main/
+/xbmc/main/Makefile
+
# /lib/
/lib/Makefile
@@ -153,6 +167,17 @@ config.log
/lib/asap/xbmc/xbmc_asap.res
+# /lib/addons/
+/lib/addons/library.xbmc.addon/Makefile
+/lib/addons/library.xbmc.gui/Makefile
+/lib/addons/library.xbmc.pvr/Makefile
+/lib/addons/library.xbmc.addon/project/VS2010Express/Release
+/lib/addons/library.xbmc.addon/project/VS2010Express/Debug
+/lib/addons/library.xbmc.gui/project/VS2010Express/Release
+/lib/addons/library.xbmc.gui/project/VS2010Express/Debug
+/lib/addons/library.xbmc.pvr/project/VS2010Express/Release
+/lib/addons/library.xbmc.pvr/project/VS2010Express/Debug
+
# /lib/cmyth/
lib/cmyth/Makefile
@@ -199,6 +224,33 @@ lib/cmyth/Makefile
/lib/fribidi/libfridibidi/Debug
/lib/fribidi/libfridibidi/Release
+# /lib/gtest
+/lib/gtest/Makefile.in
+/lib/gtest/aclocal.m4
+/lib/gtest/build-aux/config.guess
+/lib/gtest/build-aux/config.h.in
+/lib/gtest/build-aux/config.sub
+/lib/gtest/build-aux/depcomp
+/lib/gtest/build-aux/install-sh
+/lib/gtest/build-aux/ltmain.sh
+/lib/gtest/build-aux/missing
+/lib/gtest/configure
+/lib/gtest/m4/libtool.m4
+/lib/gtest/m4/ltoptions.m4
+/lib/gtest/m4/ltsugar.m4
+/lib/gtest/m4/ltversion.m4
+/lib/gtest/m4/lt~obsolete.m4
+/lib/gtest/Makefile
+/lib/gtest/build-aux/config.h
+/lib/gtest/build-aux/config.h.in~
+/lib/gtest/build-aux/stamp-h1
+/lib/gtest/fused-src/
+/lib/gtest/lib/
+/lib/gtest/libtool
+/lib/gtest/samples/.dirstamp
+/lib/gtest/scripts/gtest-config
+/lib/gtest/src/.dirstamp
+
# /lib/jsoncpp
/lib/jsoncpp/src/lib_json/Makefile
@@ -220,6 +272,11 @@ lib/cmyth/Makefile
/lib/libass/libass/Makefile.in
/lib/libass/libtool
/lib/libass/ltmain.sh
+/lib/libass/m4/libtool.m4
+/lib/libass/m4/ltoptions.m4
+/lib/libass/m4/ltsugar.m4
+/lib/libass/m4/ltversion.m4
+/lib/libass/m4/lt~obsolete.m4
/lib/libass/missing
/lib/libass/shave/libtool.m4
/lib/libass/shave/ltoptions.m4
@@ -303,6 +360,7 @@ lib/cmyth/Makefile
/lib/libapetag/config.h
/lib/libapetag/install-sh
/lib/libapetag/libtool
+/lib/libapetag/m4/lt~obsolete.m4
/lib/libapetag/stamp-h1
# /project
@@ -323,6 +381,8 @@ lib/cmyth/Makefile
/project/BuildDependencies/lib
/project/BuildDependencies/msys
/project/BuildDependencies/scripts/tmp
+/project/BuildDependencies/bin/swig
+/project/BuildDependencies/bin/doxygen
# /project/VS2008Express
/project/VS2008Express/Debug
@@ -537,6 +597,7 @@ lib/cmyth/Makefile
/xbmc/cores/dvdplayer/Makefile
/xbmc/cores/amlplayer/Makefile
+/xbmc/cores/omxplayer/Makefile
# /lib/ffmpeg/
/lib/ffmpeg/config.h
@@ -1094,31 +1155,12 @@ lib/cmyth/Makefile
# /xbmc/interfaces/
/xbmc/interfaces/Makefile
/xbmc/interfaces/python/Makefile
-/xbmc/interfaces/python/xbmcmodule/Makefile
-/xbmc/interfaces/python/linux/Makefile
-/xbmc/interfaces/python/linux/wrapper_python.def
+/xbmc/interfaces/python/generated/
+/xbmc/interfaces/python/test/Makefile
# /xbmc/network/
/xbmc/network/Makefile
-
-/lib/python/Makefile
-/lib/python/Include/pyconfig.h
-/lib/python/Makefile.pre
-/lib/python/Modules/Setup
-/lib/python/Modules/Setup.config
-/lib/python/Modules/Setup.local
-/lib/python/Modules/config.c
-/lib/python/Parser/pgen
-/lib/python/Parser/pgen.exe
-/lib/python/PC/pythonnt_rc.h
-/lib/python/build/
-/lib/python/buildno
-/lib/python/pyconfig.h
-/lib/python/pyconfig.hbak
-/lib/python/python
-/lib/python/python.exe
-/lib/python/Mac/Python/
-/lib/python/PC/pythonnt_rc_d.h
+/xbmc/network/upnp/Makefile
# /lib/libRTV/
/lib/libRTV/Makefile
@@ -1138,6 +1180,12 @@ lib/cmyth/Makefile
/lib/libXDAAP/libXDAAP_win32/Debug
/lib/libXDAAP/libXDAAP_win32/Release
+# /xbmc/osx/
+/xbmc/osx/Makefile
+
+# /portable_data
+/portable_data
+
/xbmc/screensavers/Makefile
/xbmc/screensavers/rsxs-0.9/Makefile
@@ -1237,3 +1285,12 @@ xbmc/visualizations/EGLHelpers/Makefile
/xbmc/visualizations/XBMCProjectM/libprojectM/config.inp
/xbmc/win32/git_rev.h
+
+/addons/library.xbmc.addon/libXBMC_addon.dll
+/addons/library.xbmc.addon/libXBMC_addon.lib
+/addons/library.xbmc.gui/libXBMC_gui.dll
+/addons/library.xbmc.gui/libXBMC_gui.lib
+/addons/library.xbmc.pvr/libXBMC_pvr.dll
+/addons/library.xbmc.pvr/libXBMC_pvr.lib
+
+/pvr-addons
140 Makefile.in
View
@@ -22,7 +22,6 @@ DVDPLAYER_ARCHIVES=xbmc/cores/dvdplayer/DVDPlayer.a \
DIRECTORY_ARCHIVES=$(DVDPLAYER_ARCHIVES) \
lib/SlingboxLib/SlingboxLib.a \
lib/libRTV/librtv.a \
- lib/libUPnP/libupnp.a \
lib/libXDAAP/libxdaap.a \
lib/libhts/libhts.a \
lib/libsquish/libsquish.a \
@@ -41,6 +40,7 @@ DIRECTORY_ARCHIVES=$(DVDPLAYER_ARCHIVES) \
xbmc/cores/playercorefactory/playercorefactory.a \
xbmc/dbwrappers/dbwrappers.a \
xbmc/dialogs/dialogs.a \
+ xbmc/epg/epg.a \
xbmc/filesystem/MusicDatabaseDirectory/musicdatabasedirectory.a \
xbmc/filesystem/VideoDatabaseDirectory/videodatabasedirectory.a \
xbmc/filesystem/filesystem.a \
@@ -50,8 +50,6 @@ DIRECTORY_ARCHIVES=$(DVDPLAYER_ARCHIVES) \
xbmc/interfaces/info/info.a \
xbmc/interfaces/interfaces.a \
xbmc/interfaces/json-rpc/json-rpc.a \
- xbmc/interfaces/python/python.a \
- xbmc/interfaces/python/xbmcmodule/xbmcmodule.a \
xbmc/linux/linux.a \
xbmc/music/dialogs/musicdialogs.a \
xbmc/music/infoscanner/musicscanner.a \
@@ -70,6 +68,13 @@ DIRECTORY_ARCHIVES=$(DVDPLAYER_ARCHIVES) \
xbmc/playlists/playlists.a \
xbmc/powermanagement/powermanagement.a \
xbmc/programs/programs.a \
+ xbmc/pvr/addons/pvraddons.a \
+ xbmc/pvr/channels/pvrchannels.a \
+ xbmc/pvr/dialogs/pvrdialogs.a \
+ xbmc/pvr/pvr.a \
+ xbmc/pvr/recordings/pvrrecordings.a \
+ xbmc/pvr/timers/pvrtimers.a \
+ xbmc/pvr/windows/pvrwindows.a \
xbmc/rendering/rendering.a \
xbmc/settings/settings.a \
xbmc/storage/storage.a \
@@ -82,14 +87,17 @@ DIRECTORY_ARCHIVES=$(DVDPLAYER_ARCHIVES) \
xbmc/xbmc.a \
-NWAOBJSXBMC= xbmc/commons/commons.a \
- xbmc/threads/threads.a \
+NWAOBJSXBMC= xbmc/threads/threads.a \
+ xbmc/commons/commons.a
ifeq (@USE_WEB_SERVER@,1)
DIRECTORY_ARCHIVES += xbmc/network/httprequesthandler/httprequesthandlers.a
endif
+DIRECTORY_ARCHIVES += xbmc/interfaces/legacy/legacy.a
+DIRECTORY_ARCHIVES += xbmc/interfaces/python/python_binding.a
+
ifeq (@USE_OPENGL@,1)
DIRECTORY_ARCHIVES += xbmc/rendering/gl/rendering_gl.a
endif
@@ -100,6 +108,11 @@ DIRECTORY_ARCHIVES += xbmc/windowing/egl/windowing_egl.a
DIRECTORY_ARCHIVES += xbmc/visualizations/EGLHelpers/eglhelpers.a
endif
+ifeq (@USE_UPNP@,1)
+DIRECTORY_ARCHIVES += lib/libUPnP/libupnp.a \
+ xbmc/network/upnp/upnp.a
+endif
+
ifeq ($(findstring osx,@ARCH@),osx)
DIRECTORY_ARCHIVES += xbmc/osx/osx.a
DIRECTORY_ARCHIVES += xbmc/network/osx/network.a
@@ -137,12 +150,17 @@ ifeq (@USE_ANDROID@,1)
DIRECTORY_ARCHIVES += xbmc/android/loader/AndroidDyload.a
DIRECTORY_ARCHIVES += xbmc/windowing/android/windowing_android.a
DIRECTORY_ARCHIVES += xbmc/android/activity/activity.a
+DIRECTORY_ARCHIVES += xbmc/android/bionic_supplement/bionic_supplement.a
endif
ifeq (@USE_AMLPLAYER@,1)
DIRECTORY_ARCHIVES += xbmc/cores/amlplayer/amlplayer.a
endif
+ifeq (@USE_OMXPLAYER@,1)
+DIRECTORY_ARCHIVES += xbmc/cores/omxplayer/omxplayer.a
+endif
+
PAPCODECS_DIRS= \
lib/xbadpcm \
lib/nosefart \
@@ -191,6 +209,11 @@ ifneq (@DISABLE_GOOM@,1)
VIS_DIRS+=xbmc/visualizations/Goom
endif
+LIBADDON_DIRS=\
+ lib/addons/library.xbmc.addon \
+ lib/addons/library.xbmc.pvr \
+ lib/addons/library.xbmc.gui \
+
CONFLUENCE_MEDIA=addons/skin.confluence/media
SKIN_DIRS=$(CONFLUENCE_MEDIA)
@@ -200,7 +223,7 @@ SKIN_DIRS+=$(TOUCHED_MEDIA)
endif
DIRS= $(BIN_DIRS) $(EC_DIRS) $(XBMCTEX_DIRS) $(DVDPCODECS_DIRS) $(PAPCODECS_DIRS) \
- $(LIB_DIRS) $(SS_DIRS) $(VIS_DIRS) $(SKIN_DIRS)
+ $(LIB_DIRS) $(SS_DIRS) $(VIS_DIRS) $(LIBADDON_DIRS) $(SKIN_DIRS)
LIBS=@LIBS@
CFLAGS=@CFLAGS@
@@ -224,8 +247,23 @@ FINAL_TARGETS=xbmc.bin skins xbmc-xrandr
endif
FINAL_TARGETS+=Makefile externals
-CHECK_DIRS = xbmc/utils/test \
- xbmc/threads/test
+GTEST_DIR = lib/gtest
+GTEST_INCLUDES = -I$(GTEST_DIR)/include
+GTEST_LIBS = $(GTEST_DIR)/lib/.libs/libgtest.a
+
+CHECK_DIRS = xbmc/filesystem/test \
+ xbmc/utils/test \
+ xbmc/threads/test \
+ xbmc/interfaces/python/test \
+ xbmc/test
+CHECK_LIBS = xbmc/filesystem/test/filesystemTest.a \
+ xbmc/utils/test/utilsTest.a \
+ xbmc/threads/test/threadTest.a \
+ xbmc/interfaces/python/test/pythonSwigTest.a \
+ xbmc/test/xbmc-test.a
+CHECK_PROGRAMS = xbmc-test
+
+CLEAN_FILES += $(CHECK_PROGRAMS)
all : $(FINAL_TARGETS)
@echo '-----------------------'
@@ -235,7 +273,8 @@ all : $(FINAL_TARGETS)
include Makefile.include
.PHONY : dllloader exports visualizations screensavers eventclients papcodecs \
- dvdpcodecs imagelib codecs externals force skins
+ dvdpcodecs imagelib codecs externals force skins libaddon check \
+ testframework testsuite
# hack targets to keep build system up to date
Makefile : config.status $(addsuffix .in, $(AUTOGENERATED_MAKEFILES))
@@ -308,9 +347,10 @@ visualizations: $(VIS_DIRS)
screensavers: $(SS_DIRS)
-libpython: dllloader
- $(MAKE) -C xbmc/interfaces/python
- $(MAKE) -C xbmc/interfaces/python/xbmcmodule
+libaddon: exports
+ $(MAKE) -C lib/addons/library.xbmc.addon
+ $(MAKE) -C lib/addons/library.xbmc.gui
+ $(MAKE) -C lib/addons/library.xbmc.pvr
dvdpcodecs: dllloader
$(MAKE) -C lib
$(MAKE) -C lib/libdvd
@@ -351,14 +391,19 @@ endif
imagelib: dllloader
$(MAKE) -C lib/cximage-6.0
+pvraddons: exports
+ifeq (@USE_PVR_ADDONS@,1)
+ $(MAKE) -C pvr-addons
+endif
+
codecs: papcodecs dvdpcodecs
libs: libhdhomerun libid3tag imagelib libexif system/libcpluff-@ARCH@.so $(CMYTH)
-externals: codecs libs visualizations screensavers
+externals: codecs libs visualizations screensavers libaddon pvraddons
xcode_depends: \
- codecs libs visualizations screensavers eventclients skins \
+ codecs libs visualizations screensavers eventclients skins libaddon \
lib/libsquish/libsquish.a \
lib/libapetag/.libs/libapetag.a \
lib/libRTV/librtv.a \
@@ -377,6 +422,8 @@ DYNOBJSXBMC= \
xbmc/cores/DllLoader/exports/exports.a \
xbmc/settings/settings.a \
xbmc/video/video.a \
+ xbmc/pvr/addons/pvraddons.a \
+ xbmc/pvr/windows/pvrwindows.a \
xbmc/guilib/guilib.a # must be dynamic to avoid linker errors
ifeq ($(findstring freebsd,@ARCH@),freebsd)
@@ -392,14 +439,17 @@ else
$(SILENT_LD) $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared -o $@ -Wl,--whole-archive $(DYNOBJSXBMC) $(OBJSXBMC) -Wl,--no-whole-archive -Wl,--no-undefined $(NWAOBJSXBMC) $(LIBS)
endif
-xbmc.bin: $(OBJSXBMC) $(DYNOBJSXBMC) $(NWAOBJSXBMC)
+xbmc.bin: xbmc/main/main.a $(OBJSXBMC) $(DYNOBJSXBMC) $(NWAOBJSXBMC)
ifeq ($(findstring osx,@ARCH@), osx)
- $(SILENT_LD) $(CXX) $(LDFLAGS) -o xbmc.bin -Wl,-all_load,-ObjC $(DYNOBJSXBMC) $(NWAOBJSXBMC) $(OBJSXBMC) $(LIBS) -rdynamic
+ $(SILENT_LD) $(CXX) $(LDFLAGS) -o xbmc.bin -Wl,-all_load,-ObjC $(DYNOBJSXBMC) $(NWAOBJSXBMC) $(OBJSXBMC) xbmc/main/main.a $(LIBS) -rdynamic
else
- $(SILENT_LD) $(CXX) $(CXXFLAGS) $(LDFLAGS) -o xbmc.bin -Wl,--whole-archive $(DYNOBJSXBMC) $(OBJSXBMC) -Wl,--no-whole-archive $(NWAOBJSXBMC) $(LIBS) -rdynamic
+ $(SILENT_LD) $(CXX) $(CXXFLAGS) $(LDFLAGS) -o xbmc.bin -Wl,--whole-archive $(DYNOBJSXBMC) $(OBJSXBMC) xbmc/main/main.a -Wl,--no-whole-archive $(NWAOBJSXBMC) $(LIBS) -rdynamic
endif
+xbmc/main/main.a: force
+ $(MAKE) -C xbmc/main
+
xbmc-xrandr: xbmc-xrandr.c
ifneq (1,@USE_XRANDR@)
# xbmc-xrandr.c gets picked up by the default make rules
@@ -408,15 +458,7 @@ else
$(SILENT_LD) $(CC) $(CFLAGS) $(LDFLAGS) -o xbmc-xrandr xbmc-xrandr.c -lXrandr -lX11 -lm
endif
-tools/XBMCTex/XBMCTex:
-ifeq ($(findstring osx,@ARCH@), osx)
- # hack this for now
- $(MAKE) -C tools/XBMCTex -f Makefile.osx
-else
- $(MAKE) -C tools/XBMCTex/
-endif
-
-tools/TexturePacker/TexturePacker: xbmc/guilib/guilib.a lib/libsquish/libsquish.a
+tools/TexturePacker/TexturePacker: lib/libsquish/libsquish.a xbmc/guilib/XBTF.h
$(MAKE) -C tools/TexturePacker/
@@ -448,6 +490,9 @@ endif
install-arch:
@# Arch dependent files
+ifeq (@USE_PVR_ADDONS@,1)
+ $(MAKE) -C pvr-addons install
+endif
ifeq ($(findstring freebsd,@ARCH@), freebsd)
@find -E system addons -type f -not -iregex ".*svn.*" \
-iregex ".*@ARCH@.*|.*\.vis|.*\.xbs" \
@@ -464,7 +509,7 @@ ifeq ($(findstring Darwin,$(shell uname -s)),Darwin)
-exec install "{}" $(DESTDIR)$(libdir)/xbmc/"{}" \; \
-exec printf " -- %-75.75s\r" "{}" \;
else
- @find system addons -regextype posix-extended -type f -not -iregex ".*svn.*" -iregex ".*\.so|.*\.vis|.*\.xbs" -exec install -D "{}" $(DESTDIR)$(libdir)/xbmc/"{}" \; -printf " -- %-75.75f\r"
+ @find system addons -regextype posix-extended -type f -not -iregex ".*svn.*" -iregex ".*\.so|.*\.vis|.*\.xbs|.*\.pvr" -exec install -D "{}" $(DESTDIR)$(libdir)/xbmc/"{}" \; -printf " -- %-75.75f\r"
endif
endif
@@ -503,7 +548,7 @@ ifeq ($(findstring Darwin,$(shell uname -s)),Darwin)
-exec install -m 0644 "{}" $(DESTDIR)$(datarootdir)/xbmc/"{}" \; \
-exec printf " -- %-75.75s\r" "{}" \;
else
- @find addons language media sounds userdata system -regextype posix-extended -type f -not -iregex ".*@ARCH@.*|.*\.vis|.*\.xbs|.*svn.*|.*\.so|.*\.dll" -exec install -D -m 0644 "{}" $(DESTDIR)$(datarootdir)/xbmc/"{}" \; -printf " -- %-75.75f\r"
+ @find addons language media sounds userdata system -regextype posix-extended -type f -not -iregex ".*@ARCH@.*|.*\.vis|.*\.xbs|.*svn.*|.*\.so|.*\.dll|.*\.pvr" -exec install -D -m 0644 "{}" $(DESTDIR)$(datarootdir)/xbmc/"{}" \; -printf " -- %-75.75f\r"
endif
endif
@# Icons and links
@@ -521,6 +566,8 @@ uninstall:
@rm -rf $(DESTDIR)$(datarootdir)/xbmc $(DESTDIR)$(bindir)/xbmc
@rm -rf $(DESTDIR)$(bindir)/xbmc-standalone
@rm -rf $(DESTDIR)$(datarootdir)/xsessions/XBMC.desktop
+ @rm -rf $(libdir)/libXBMC_*
+ @rm -rf $(prefix)/include/xbmc
@echo "Done!"
clean-xbmc.bin:
@@ -540,11 +587,42 @@ clean-screensavers:
for d in $(SS_DIRS); do if test -f $$d/Makefile; then $(MAKE) -C $$d clean; fi; done
clean-visualisations:
for d in $(VIS_DIRS); do if test -f $$d/Makefile; then $(MAKE) -C $$d clean; fi; done
+clean-libaddons:
+ for d in $(LIBADDON_DIRS); do if test -f $$d/Makefile; then $(MAKE) -C $$d clean; fi; done
+clean-pvraddons:
+ifeq (@USE_PVR_ADDONS@,1)
+ if test -f pvr-addons/Makefile; then $(MAKE) -C pvr-addons clean; fi;
+endif
clean-codecs: clean-dvdpcodecs clean-papcodecs
clean-externals: clean-codecs clean-eventclients clean-xbmctex clean-libs \
- clean-screensavers clean-visualisations
+ clean-screensavers clean-visualisations clean-libaddons clean-pvraddons
+
+ifeq (1,@GTEST_CONFIGURED@)
+check: testsuite
+ for check_program in $(CHECK_PROGRAMS); do $(CURDIR)/$$check_program; done
+
+testsuite: $(CHECK_PROGRAMS)
+
+testframework: $(GTEST_LIBS)
+
+$(GTEST_LIBS): $(GTEST_DIR)/Makefile
+
+$(GTEST_DIR)/Makefile: force
+ $(MAKE) -C $(GTEST_DIR)
-check:
- for d in $(CHECK_DIRS); do if test -f $$d/Makefile; then $(MAKE) -C $$d $@; fi; done
+$(CHECK_LIBS): force
+ @$(MAKE) $(if $(V),,-s) -C $(@D)
+
+xbmc-test: $(CHECK_LIBS) $(OBJSXBMC) $(DYNOBJSXBMC) $(NWAOBJSXBMC) $(GTEST_LIBS)
+ifeq ($(findstring osx,@ARCH@), osx)
+ $(SILENT_LD) $(CXX) $(LDFLAGS) $(GTEST_INCLUDES) -o $@ -Wl,-all_load,-ObjC $(CHECK_LIBS) $(DYNOBJSXBMC) $(NWAOBJSXBMC) $(OBJSXBMC) $(GTEST_LIBS) $(LIBS) -rdynamic
+else
+ $(SILENT_LD) $(CXX) $(CXXFLAGS) $(LDFLAGS) $(GTEST_INCLUDES) -o $@ -Wl,--whole-archive $(CHECK_LIBS) $(DYNOBJSXBMC) $(OBJSXBMC) -Wl,--no-whole-archive $(NWAOBJSXBMC) $(GTEST_LIBS) $(LIBS) -rdynamic
+endif
+else
+# Give a message that the framework is not configured, but don't fail.
+check testsuite testframework:
+ @echo "Google Test Framework not configured, skipping testsuite check."
+endif
10 Makefile.include.in
View
@@ -40,6 +40,10 @@ ifneq (@USE_EXTERNAL_FFMPEG@,1)
endif
INCLUDES+=-I@abs_top_srcdir@/xbmc/linux
INCLUDES+=-I@abs_top_srcdir@/xbmc/cores/dvdplayer
+ifeq (@USE_OMXPLAYER@,1)
+INCLUDES+=-I@abs_top_srcdir@/xbmc/cores/AudioEngine
+INCLUDES+=-I@abs_top_srcdir@/xbmc/cores/AudioEngine/Utils
+endif
DEFINES+= \
@ARCH_DEFINES@ \
-D_FILE_DEFINED \
@@ -121,7 +125,7 @@ GEN_DEPS=\
&& $(GEN_DEPS)
-.PHONY : lib pch clean distclean distclean_evil
+.PHONY : lib pch clean distclean distclean_evil check testsuite
$(LIB): $(OBJS)
$(SILENT_AR) $(AR) $(ARFLAGS) $(LIB) $(OBJS)
@@ -132,11 +136,11 @@ pch: $(PCH:.h=.h.gch)
clean:
$(RM) $(OBJS) *.o $(LIB) $(SLIB) $(CLEAN_FILES) $(PCH:.h=.h.gch) $(DEPS)
for d in $(DIRS); do (if test -f "$$d/Makefile"; then ($(MAKE) -C "$$d" clean); fi ); done
- for d in $(CHECK_DIRS); do if test -f $$d/Makefile; then $(MAKE) -C $$d $@; fi; done
+ for d in $(CHECK_DIRS) $(GTEST_DIR); do if test -f $$d/Makefile; then $(MAKE) -C $$d $@; fi; done
distclean:
$(RM) $(OBJS) *.o $(LIB) $(SLIB) $(STATICLIB) $(CLEAN_FILES) $(DISTCLEAN_FILES) $(PCH:.h=.h.gch) $(DEPS)
for d in $(DIRS); do (if test -f "$$d/Makefile"; then ($(MAKE) -C "$$d" distclean || $(MAKE) -C "$$d" clean); fi ); done
- for d in $(CHECK_DIRS); do (if test -f "$$d/Makefile"; then ($(MAKE) -C "$$d" $@ || $(MAKE) -C "$$d" clean); fi ); done
+ for d in $(CHECK_DIRS) $(GTEST_DIR); do (if test -f "$$d/Makefile"; then ($(MAKE) -C "$$d" $@ || $(MAKE) -C "$$d" clean); fi ); done
if [ "$(shell pwd -P)" = "$(abs_top_srcdir)" ] || \
[ "$(shell pwd)" = "$(abs_top_srcdir)" ]; then rm -f $(AUTOGENERATED_MAKEFILES) Makefile.include Makefile; fi
1,245 XBMC-ATV2.xcodeproj/project.pbxproj
View
791 additions, 454 deletions not shown
1,275 XBMC-IOS.xcodeproj/project.pbxproj
View
811 additions, 464 deletions not shown
1,279 XBMC.xcodeproj/project.pbxproj
View
795 additions, 484 deletions not shown
263 addons/library.xbmc.addon/dlfcn-win32.cpp
View
@@ -0,0 +1,263 @@
+/*
+ * dlfcn-win32
+ * Copyright (c) 2007 Ramiro Polla
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <windows.h>
+#include <stdio.h>
+
+#include "dlfcn-win32.h"
+
+/* Note:
+ * MSDN says these functions are not thread-safe. We make no efforts to have
+ * any kind of thread safety.
+ */
+
+/* I have no special reason to have set MAX_GLOBAL_OBJECTS to this value. Any
+ * comments are welcome.
+ */
+#define MAX_OBJECTS 255
+
+static HMODULE global_objects[MAX_OBJECTS];
+
+/* This function adds an object to the list of global objects.
+ * The implementation is very simple and slow.
+ * TODO: should failing this function be enough to fail the call to dlopen( )?
+ */
+static void global_object_add( HMODULE hModule )
+{
+ int i;
+
+ for( i = 0 ; i < MAX_OBJECTS ; i++ )
+ {
+ if( !global_objects[i] )
+ {
+ global_objects[i] = hModule;
+ break;
+ }
+ }
+}
+
+static void global_object_rem( HMODULE hModule )
+{
+ int i;
+
+ for( i = 0 ; i < MAX_OBJECTS ; i++ )
+ {
+ if( global_objects[i] == hModule )
+ {
+ global_objects[i] = 0;
+ break;
+ }
+ }
+}
+
+/* Argument to last function. Used in dlerror( ) */
+static char last_name[MAX_PATH];
+
+static int copy_string( char *dest, int dest_size, const char *src )
+{
+ int i = 0;
+
+ if( src && dest )
+ {
+ for( i = 0 ; i < dest_size-1 ; i++ )
+ {
+ if( !src[i] )
+ break;
+ else
+ dest[i] = src[i];
+ }
+ }
+ dest[i] = '\0';
+
+ return i;
+}
+
+void *dlopen( const char *file, int mode )
+{
+ HMODULE hModule;
+ UINT uMode;
+
+ /* Do not let Windows display the critical-error-handler message box */
+ uMode = SetErrorMode( SEM_FAILCRITICALERRORS );
+
+ if( file == 0 )
+ {
+ /* Save NULL pointer for error message */
+ _snprintf_s( last_name, MAX_PATH, MAX_PATH, "0x%p", file );
+
+ /* POSIX says that if the value of file is 0, a handle on a global
+ * symbol object must be provided. That object must be able to access
+ * all symbols from the original program file, and any objects loaded
+ * with the RTLD_GLOBAL flag.
+ * The return value from GetModuleHandle( ) allows us to retrieve
+ * symbols only from the original program file. For objects loaded with
+ * the RTLD_GLOBAL flag, we create our own list later on.
+ */
+ hModule = GetModuleHandle( NULL );
+ }
+ else
+ {
+ char lpFileName[MAX_PATH];
+ int i;
+
+ /* MSDN says backslashes *must* be used instead of forward slashes. */
+ for( i = 0 ; i < sizeof(lpFileName)-1 ; i++ )
+ {
+ if( !file[i] )
+ break;
+ else if( file[i] == '/' )
+ lpFileName[i] = '\\';
+ else
+ lpFileName[i] = file[i];
+ }
+ lpFileName[i] = '\0';
+
+ /* Save file name for error message */
+ copy_string( last_name, sizeof(last_name), lpFileName );
+
+ /* POSIX says the search path is implementation-defined.
+ * LOAD_WITH_ALTERED_SEARCH_PATH is used to make it behave more closely
+ * to UNIX's search paths (start with system folders instead of current
+ * folder).
+ */
+ hModule = LoadLibraryEx( (LPSTR) lpFileName, NULL,
+ LOAD_WITH_ALTERED_SEARCH_PATH );
+ /* If the object was loaded with RTLD_GLOBAL, add it to list of global
+ * objects, so that its symbols may be retrieved even if the handle for
+ * the original program file is passed. POSIX says that if the same
+ * file is specified in multiple invocations, and any of them are
+ * RTLD_GLOBAL, even if any further invocations use RTLD_LOCAL, the
+ * symbols will remain global.
+ */
+
+ if( hModule && (mode & RTLD_GLOBAL) )
+ global_object_add( hModule );
+ }
+
+ /* Return to previous state of the error-mode bit flags. */
+ SetErrorMode( uMode );
+
+ return (void *) hModule;
+}
+
+int dlclose( void *handle )
+{
+ HMODULE hModule = (HMODULE) handle;
+ BOOL ret;
+
+ /* Save handle for error message */
+ _snprintf_s( last_name, MAX_PATH, MAX_PATH, "0x%p", handle );
+
+ ret = FreeLibrary( hModule );
+
+ /* If the object was loaded with RTLD_GLOBAL, remove it from list of global
+ * objects.
+ */
+ if( ret )
+ global_object_rem( hModule );
+
+ /* dlclose's return value in inverted in relation to FreeLibrary's. */
+ ret = !ret;
+
+ return (int) ret;
+}
+
+void *dlsym( void *handle, const char *name )
+{
+ FARPROC symbol;
+ HMODULE myhandle = (HMODULE) handle;
+
+ /* Save symbol name for error message */
+ copy_string( last_name, sizeof(last_name), name );
+
+ symbol = GetProcAddress( myhandle, name );
+#if 0
+ if( symbol == NULL )
+ {
+ HMODULE hModule;
+
+ /* If the handle for the original program file is passed, also search
+ * in all globally loaded objects.
+ */
+
+ hModule = GetModuleHandle( NULL );
+
+ if( hModule == handle )
+ {
+ int i;
+
+ for( i = 0 ; i < MAX_OBJECTS ; i++ )
+ {
+ if( global_objects[i] != 0 )
+ {
+ symbol = GetProcAddress( global_objects[i], name );
+ if( symbol != NULL )
+ break;
+ }
+ }
+ }
+
+
+ CloseHandle( hModule );
+ }
+#endif
+ return (void*) symbol;
+}
+
+char *dlerror( void )
+{
+ DWORD dwMessageId;
+ /* POSIX says this function doesn't have to be thread-safe, so we use one
+ * static buffer.
+ * MSDN says the buffer cannot be larger than 64K bytes, so we set it to
+ * the limit.
+ */
+ static char lpBuffer[65535];
+ DWORD ret;
+
+ dwMessageId = GetLastError( );
+
+ if( dwMessageId == 0 )
+ return NULL;
+
+ /* Format error message to:
+ * "<argument to function that failed>": <Windows localized error message>
+ */
+ ret = copy_string( lpBuffer, sizeof(lpBuffer), "\"" );
+ ret += copy_string( lpBuffer+ret, sizeof(lpBuffer)-ret, last_name );
+ ret += copy_string( lpBuffer+ret, sizeof(lpBuffer)-ret, "\": " );
+ ret += FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwMessageId,
+ MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ),
+ lpBuffer+ret, sizeof(lpBuffer)-ret, NULL );
+
+ if( ret > 1 )
+ {
+ /* POSIX says the string must not have trailing <newline> */
+ if( lpBuffer[ret-2] == '\r' && lpBuffer[ret-1] == '\n' )
+ lpBuffer[ret-2] = '\0';
+ }
+
+ /* POSIX says that invoking dlerror( ) a second time, immediately following
+ * a prior invocation, shall result in NULL being returned.
+ */
+ SetLastError(0);
+
+ return lpBuffer;
+}
+
46 addons/library.xbmc.addon/dlfcn-win32.h
View
@@ -0,0 +1,46 @@
+#pragma once
+/*
+ * dlfcn-win32
+ * Copyright (c) 2007 Ramiro Polla
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef DLFCN_H
+#define DLFCN_H
+
+/* POSIX says these are implementation-defined.
+ * To simplify use with Windows API, we treat them the same way.
+ */
+
+#define RTLD_LAZY 0
+#define RTLD_NOW 0
+
+#define RTLD_GLOBAL (1 << 1)
+#define RTLD_LOCAL (1 << 2)
+
+/* These two were added in The Open Group Base Specifications Issue 6.
+ * Note: All other RTLD_* flags in any dlfcn.h are not standard compliant.
+ */
+
+#define RTLD_DEFAULT 0
+#define RTLD_NEXT 0
+
+void *dlopen ( const char *file, int mode );
+int dlclose( void *handle );
+void *dlsym ( void *handle, const char *name );
+char *dlerror( void );
+
+#endif /* DLFCN-WIN32_H */
368 addons/library.xbmc.addon/libXBMC_addon.h
View
@@ -0,0 +1,368 @@
+#pragma once
+/*
+ * Copyright (C) 2005-2010 Team XBMC
+ * http://www.xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <string>
+#include <vector>
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+
+#ifdef _WIN32 // windows
+#include "dlfcn-win32.h"
+#define ADDON_DLL "\\library.xbmc.addon\\libXBMC_addon" ADDON_HELPER_EXT
+#define ADDON_HELPER_EXT ".dll"
+#else
+#if defined(__APPLE__) // osx
+#if defined(__POWERPC__)
+#define ADDON_HELPER_ARCH "powerpc-osx"
+#elif defined(__arm__)
+#define ADDON_HELPER_ARCH "arm-osx"
+#elif defined(__x86_64__)
+#define ADDON_HELPER_ARCH "x86-osx"
+#else
+#define ADDON_HELPER_ARCH "x86-osx"
+#endif
+#else // linux
+#if defined(__x86_64__)
+#define ADDON_HELPER_ARCH "x86_64-linux"
+#elif defined(_POWERPC)
+#define ADDON_HELPER_ARCH "powerpc-linux"
+#elif defined(_POWERPC64)
+#define ADDON_HELPER_ARCH "powerpc64-linux"
+#elif defined(__ARMEL__)
+#define ADDON_HELPER_ARCH "arm"
+#elif defined(_MIPSEL)
+#define ADDON_HELPER_ARCH "mipsel-linux"
+#else
+#define ADDON_HELPER_ARCH "i486-linux"
+#endif
+#endif
+#include <dlfcn.h> // linux+osx
+#define ADDON_HELPER_EXT ".so"
+#define ADDON_DLL "/library.xbmc.addon/libXBMC_addon-" ADDON_HELPER_ARCH ADDON_HELPER_EXT
+#endif
+
+#ifdef LOG_DEBUG
+#undef LOG_DEBUG
+#endif
+#ifdef LOG_INFO
+#undef LOG_INFO
+#endif
+#ifdef LOG_NOTICE
+#undef LOG_NOTICE
+#endif
+#ifdef LOG_ERROR
+#undef LOG_ERROR
+#endif
+
+namespace ADDON
+{
+ typedef enum addon_log
+ {
+ LOG_DEBUG,
+ LOG_INFO,
+ LOG_NOTICE,
+ LOG_ERROR
+ } addon_log_t;
+
+ typedef enum queue_msg
+ {
+ QUEUE_INFO,
+ QUEUE_WARNING,
+ QUEUE_ERROR
+ } queue_msg_t;
+
+ class CHelper_libXBMC_addon
+ {
+ public:
+ CHelper_libXBMC_addon()
+ {
+ m_libXBMC_addon = NULL;
+ m_Handle = NULL;
+ }
+
+ ~CHelper_libXBMC_addon()
+ {
+ if (m_libXBMC_addon)
+ {
+ XBMC_unregister_me();
+ dlclose(m_libXBMC_addon);
+ }
+ }
+
+ bool RegisterMe(void *Handle)
+ {
+ m_Handle = Handle;
+
+ std::string libBasePath;
+ libBasePath = ((cb_array*)m_Handle)->libPath;
+ libBasePath += ADDON_DLL;
+
+ m_libXBMC_addon = dlopen(libBasePath.c_str(), RTLD_LAZY);
+ if (m_libXBMC_addon == NULL)
+ {
+ fprintf(stderr, "Unable to load %s\n", dlerror());
+ return false;
+ }
+
+ XBMC_register_me = (int (*)(void *HANDLE))
+ dlsym(m_libXBMC_addon, "XBMC_register_me");
+ if (XBMC_register_me == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ XBMC_unregister_me = (void (*)())
+ dlsym(m_libXBMC_addon, "XBMC_unregister_me");
+ if (XBMC_unregister_me == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ Log = (void (*)(const addon_log_t loglevel, const char *format, ... ))
+ dlsym(m_libXBMC_addon, "XBMC_log");
+ if (Log == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ GetSetting = (bool (*)(const char* settingName, void *settingValue))
+ dlsym(m_libXBMC_addon, "XBMC_get_setting");
+ if (GetSetting == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ QueueNotification = (void (*)(const queue_msg_t loglevel, const char *format, ... ))
+ dlsym(m_libXBMC_addon, "XBMC_queue_notification");
+ if (QueueNotification == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ UnknownToUTF8 = (void (*)(std::string &str))
+ dlsym(m_libXBMC_addon, "XBMC_unknown_to_utf8");
+ if (UnknownToUTF8 == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ GetLocalizedString = (const char* (*)(int dwCode))
+ dlsym(m_libXBMC_addon, "XBMC_get_localized_string");
+ if (GetLocalizedString == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ GetDVDMenuLanguage = (const char* (*)())
+ dlsym(m_libXBMC_addon, "XBMC_get_dvd_menu_language");
+ if (GetDVDMenuLanguage == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ OpenFile = (void* (*)(const char* strFileName, unsigned int flags))
+ dlsym(m_libXBMC_addon, "XBMC_open_file");
+ if (OpenFile == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ OpenFileForWrite = (void* (*)(const char* strFileName, bool bOverWrite))
+ dlsym(m_libXBMC_addon, "XBMC_open_file_for_write");
+ if (OpenFileForWrite == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ ReadFile = (unsigned int (*)(void* file, void* lpBuf, int64_t uiBufSize))
+ dlsym(m_libXBMC_addon, "XBMC_read_file");
+ if (ReadFile == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ ReadFileString = (bool (*)(void* file, char *szLine, int iLineLength))
+ dlsym(m_libXBMC_addon, "XBMC_read_file_string");
+ if (ReadFileString == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ WriteFile = (int (*)(void* file, const void* lpBuf, int64_t uiBufSize))
+ dlsym(m_libXBMC_addon, "XBMC_write_file");
+ if (WriteFile == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ FlushFile = (void (*)(void* file))
+ dlsym(m_libXBMC_addon, "XBMC_flush_file");
+ if (FlushFile == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ SeekFile = (int64_t (*)(void* file, int64_t iFilePosition, int iWhence))
+ dlsym(m_libXBMC_addon, "XBMC_seek_file");
+ if (SeekFile == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ TruncateFile = (int (*)(void* file, int64_t iSize))
+ dlsym(m_libXBMC_addon, "XBMC_truncate_file");
+ if (TruncateFile == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ GetFilePosition = (int64_t (*)(void* file))
+ dlsym(m_libXBMC_addon, "XBMC_get_file_position");
+ if (GetFilePosition == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ GetFileLength = (int64_t (*)(void* file))
+ dlsym(m_libXBMC_addon, "XBMC_get_file_length");
+ if (GetFileLength == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ CloseFile = (void (*)(void* file))
+ dlsym(m_libXBMC_addon, "XBMC_close_file");
+ if (CloseFile == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ GetFileChunkSize = (int (*)(void* file))
+ dlsym(m_libXBMC_addon, "XBMC_get_file_chunk_size");
+ if (GetFileChunkSize == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ CanOpenDirectory = (bool (*)(const char* strURL))
+ dlsym(m_libXBMC_addon, "XBMC_can_open_directory");
+ if (CanOpenDirectory == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ return XBMC_register_me(m_Handle) > 0;
+ }
+
+ /*!
+ * @brief Add a message to XBMC's log.
+ * @param loglevel The log level of the message.
+ * @param format The format of the message to pass to XBMC.
+ */
+ void (*Log)(const addon_log_t loglevel, const char *format, ... );
+
+ /*!
+ * @brief Get a settings value for this add-on.
+ * @param settingName The name of the setting to get.
+ * @param settingValue The value.
+ * @return True if the settings was fetched successfully, false otherwise.
+ */
+ bool (*GetSetting)(const char* settingName, void *settingValue);
+
+ /*!
+ * @brief Queue a notification in the GUI.
+ * @param type The message type.
+ * @param format The format of the message to pass to display in XBMC.
+ */
+ void (*QueueNotification)(const queue_msg_t type, const char *format, ... );
+
+ /*!
+ * @brief Translate a string with an unknown encoding to UTF8.
+ * @param sourceDest The string to translate.
+ */
+ void (*UnknownToUTF8)(std::string &str);
+
+ /*!
+ * @brief Get a localised message.
+ * @param dwCode The code of the message to get.
+ * @return The message. Needs to be freed when done.
+ */
+ const char* (*GetLocalizedString)(int dwCode);
+
+
+ /*!
+ * @brief Get the DVD menu language.
+ * @return The language. Needs to be freed when done.
+ */
+ const char* (*GetDVDMenuLanguage)();
+
+ /*!
+ * @brief Open the file with filename via XBMC's CFile. Needs to be closed by calling CloseFile() when done.
+ * @param strFileName The filename to open.
+ * @param flags The flags to pass. Documented in XBMC's File.h
+ * @return A handle for the file, or NULL if it couldn't be opened.
+ */
+ void* (*OpenFile)(const char* strFileName, unsigned int flags);
+
+ /*!
+ * @brief Open the file with filename via XBMC's CFile in write mode. Needs to be closed by calling CloseFile() when done.
+ * @param strFileName The filename to open.
+ * @param bOverWrite True to overwrite, false otherwise.
+ * @return A handle for the file, or NULL if it couldn't be opened.
+ */
+ void* (*OpenFileForWrite)(const char* strFileName, bool bOverWrite);
+
+ /*!
+ * @brief Read from an open file.
+ * @param file The file handle to read from.
+ * @param lpBuf The buffer to store the data in.
+ * @param uiBufSize The size of the buffer.
+ * @return Number of bytes read.
+ */
+ unsigned int (*ReadFile)(void* file, void* lpBuf, int64_t uiBufSize);
+
+ /*!
+ * @brief Read a string from an open file.
+ * @param file The file handle to read from.
+ * @param szLine The buffer to store the data in.
+ * @param iLineLength The size of the buffer.
+ * @return True when a line was read, false otherwise.
+ */
+ bool (*ReadFileString)(void* file, char *szLine, int iLineLength);
+
+ /*!
+ * @brief Write to a file opened in write mode.
+ * @param file The file handle to write to.
+ * @param lpBuf The data to write.
+ * @param uiBufSize Size of the data to write.
+ * @return The number of bytes read.
+ */
+ int (*WriteFile)(void* file, const void* lpBuf, int64_t uiBufSize);
+
+ /*!
+ * @brief Flush buffered data.
+ * @param file The file handle to flush the data for.
+ */
+ void (*FlushFile)(void* file);
+
+ /*!
+ * @brief Seek in an open file.
+ * @param file The file handle to see in.
+ * @param iFilePosition The new position.
+ * @param iWhence Seek argument. See stdio.h for possible values.
+ * @return The new position.
+ */
+ int64_t (*SeekFile)(void* file, int64_t iFilePosition, int iWhence);
+
+ /*!
+ * @brief Truncate a file to the requested size.
+ * @param file The file handle to truncate.
+ * @param iSize The new max size.
+ * @return New size?
+ */
+ int (*TruncateFile)(void* file, int64_t iSize);
+
+ /*!
+ * @brief The current position in an open file.
+ * @param file The file handle to get the position for.
+ * @return The requested position.
+ */
+ int64_t (*GetFilePosition)(void* file);
+
+ /*!
+ * @brief Get the file size of an open file.
+ * @param file The file to get the size for.
+ * @return The requested size.
+ */
+ int64_t (*GetFileLength)(void* file);
+
+ /*!
+ * @brief Close an open file.
+ * @param file The file handle to close.
+ */
+ void (*CloseFile)(void* file);
+
+ /*!
+ * @brief Get the chunk size for an open file.
+ * @param file the file handle to get the size for.
+ * @return The requested size.
+ */
+ int (*GetFileChunkSize)(void* file);
+
+ /*!
+ * @brief Checks whether a directory can be opened.
+ * @param strUrl The URL of the directory to check.
+ * @return True when it can be opened, false otherwise.
+ */
+ bool (*CanOpenDirectory)(const char* strUrl);
+
+ protected:
+ int (*XBMC_register_me)(void *HANDLE);
+ void (*XBMC_unregister_me)();
+
+ private:
+ void *m_libXBMC_addon;
+ void *m_Handle;
+ struct cb_array
+ {
+ const char* libPath;
+ };
+ };
+};
309 addons/library.xbmc.gui/libXBMC_gui.h
View
@@ -0,0 +1,309 @@
+#pragma once
+/*
+ * Copyright (C) 2005-2010 Team XBMC
+ * http://www.xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <string>
+#include <vector>
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "../library.xbmc.addon/libXBMC_addon.h"
+
+typedef void* GUIHANDLE;
+
+#ifdef _WIN32
+#define GUI_HELPER_DLL "\\library.xbmc.gui\\libXBMC_gui" ADDON_HELPER_EXT
+#else
+#define GUI_HELPER_DLL "/library.xbmc.gui/libXBMC_gui-" ADDON_HELPER_ARCH ADDON_HELPER_EXT
+#endif
+
+#define ADDON_ACTION_PREVIOUS_MENU 10
+#define ADDON_ACTION_CLOSE_DIALOG 51
+
+class CAddonGUIWindow;
+class CAddonGUISpinControl;
+class CAddonGUIRadioButton;
+class CAddonGUIProgressControl;
+class CAddonListItem;
+
+class CHelper_libXBMC_gui
+{
+public:
+ CHelper_libXBMC_gui()
+ {
+ m_libXBMC_gui = NULL;
+ m_Handle = NULL;
+ }
+
+ ~CHelper_libXBMC_gui()
+ {
+ if (m_libXBMC_gui)
+ {
+ GUI_unregister_me();
+ dlclose(m_libXBMC_gui);
+ }
+ }
+
+ bool RegisterMe(void *Handle)
+ {
+ m_Handle = Handle;
+
+ std::string libBasePath;
+ libBasePath = ((cb_array*)m_Handle)->libPath;
+ libBasePath += GUI_HELPER_DLL;
+
+ m_libXBMC_gui = dlopen(libBasePath.c_str(), RTLD_LAZY);
+ if (m_libXBMC_gui == NULL)
+ {
+ fprintf(stderr, "Unable to load %s\n", dlerror());
+ return false;
+ }
+
+ GUI_register_me = (int (*)(void *HANDLE))
+ dlsym(m_libXBMC_gui, "GUI_register_me");
+ if (GUI_register_me == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ GUI_unregister_me = (void (*)())
+ dlsym(m_libXBMC_gui, "GUI_unregister_me");
+ if (GUI_unregister_me == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ Lock = (void (*)())
+ dlsym(m_libXBMC_gui, "GUI_lock");
+ if (Lock == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ Unlock = (void (*)())
+ dlsym(m_libXBMC_gui, "GUI_unlock");
+ if (Unlock == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ GetScreenHeight = (int (*)())
+ dlsym(m_libXBMC_gui, "GUI_get_screen_height");
+ if (GetScreenHeight == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ GetScreenWidth = (int (*)())
+ dlsym(m_libXBMC_gui, "GUI_get_screen_width");
+ if (GetScreenWidth == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ GetVideoResolution = (int (*)())
+ dlsym(m_libXBMC_gui, "GUI_get_video_resolution");
+ if (GetVideoResolution == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ Window_create = (CAddonGUIWindow* (*)(const char *xmlFilename, const char *defaultSkin, bool forceFallback, bool asDialog))
+ dlsym(m_libXBMC_gui, "GUI_Window_create");
+ if (Window_create == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ Window_destroy = (void (*)(CAddonGUIWindow* p))
+ dlsym(m_libXBMC_gui, "GUI_Window_destroy");
+ if (Window_destroy == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ Control_getSpin = (CAddonGUISpinControl* (*)(CAddonGUIWindow *window, int controlId))
+ dlsym(m_libXBMC_gui, "GUI_control_get_spin");
+ if (Control_getSpin == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ Control_releaseSpin = (void (*)(CAddonGUISpinControl* p))
+ dlsym(m_libXBMC_gui, "GUI_control_release_spin");
+ if (Control_releaseSpin == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ Control_getRadioButton = (CAddonGUIRadioButton* (*)(CAddonGUIWindow *window, int controlId))
+ dlsym(m_libXBMC_gui, "GUI_control_get_radiobutton");
+ if (Control_getRadioButton == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ Control_releaseRadioButton = (void (*)(CAddonGUIRadioButton* p))
+ dlsym(m_libXBMC_gui, "GUI_control_release_radiobutton");
+ if (Control_releaseRadioButton == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ Control_getProgress = (CAddonGUIProgressControl* (*)(CAddonGUIWindow *window, int controlId))
+ dlsym(m_libXBMC_gui, "GUI_control_get_progress");
+ if (Control_getProgress == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ Control_releaseProgress = (void (*)(CAddonGUIProgressControl* p))
+ dlsym(m_libXBMC_gui, "GUI_control_release_progress");
+ if (Control_releaseProgress == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ ListItem_create = (CAddonListItem* (*)(const char *label, const char *label2, const char *iconImage, const char *thumbnailImage, const char *path))
+ dlsym(m_libXBMC_gui, "GUI_ListItem_create");
+ if (ListItem_create == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ ListItem_destroy = (void (*)(CAddonListItem* p))
+ dlsym(m_libXBMC_gui, "GUI_ListItem_destroy");
+ if (ListItem_destroy == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+
+ return GUI_register_me(m_Handle) > 0;
+ }
+
+ void (*Lock)();
+ void (*Unlock)();
+ int (*GetScreenHeight)();
+ int (*GetScreenWidth)();
+ int (*GetVideoResolution)();
+ CAddonGUIWindow* (*Window_create)(const char *xmlFilename, const char *defaultSkin, bool forceFallback, bool asDialog);
+ void (*Window_destroy)(CAddonGUIWindow* p);
+ CAddonGUISpinControl* (*Control_getSpin)(CAddonGUIWindow *window, int controlId);
+ void (*Control_releaseSpin)(CAddonGUISpinControl* p);
+ CAddonGUIRadioButton* (*Control_getRadioButton)(CAddonGUIWindow *window, int controlId);
+ void (*Control_releaseRadioButton)(CAddonGUIRadioButton* p);
+ CAddonGUIProgressControl* (*Control_getProgress)(CAddonGUIWindow *window, int controlId);
+ void (*Control_releaseProgress)(CAddonGUIProgressControl* p);
+ CAddonListItem* (*ListItem_create)(const char *label, const char *label2, const char *iconImage, const char *thumbnailImage, const char *path);
+ void (*ListItem_destroy)(CAddonListItem* p);
+
+protected:
+ int (*GUI_register_me)(void *HANDLE);
+ void (*GUI_unregister_me)();
+
+private:
+ void *m_libXBMC_gui;
+ void *m_Handle;
+ struct cb_array
+ {
+ const char* libPath;
+ };
+};
+
+class CAddonGUISpinControl
+{
+public:
+ CAddonGUISpinControl(CAddonGUIWindow *window, int controlId);
+ virtual ~CAddonGUISpinControl(void) {}
+
+ virtual void SetVisible(bool yesNo);
+ virtual void SetText(const char *label);
+ virtual void Clear();
+ virtual void AddLabel(const char *label, int iValue);
+ virtual int GetValue();
+ virtual void SetValue(int iValue);
+
+private:
+ CAddonGUIWindow *m_Window;
+ int m_ControlId;
+ GUIHANDLE m_SpinHandle;
+};
+
+class CAddonGUIRadioButton
+{
+public:
+ CAddonGUIRadioButton(CAddonGUIWindow *window, int controlId);
+ ~CAddonGUIRadioButton() {}
+
+ virtual void SetVisible(bool yesNo);
+ virtual void SetText(const char *label);
+ virtual void SetSelected(bool yesNo);
+ virtual bool IsSelected();
+
+private:
+ CAddonGUIWindow *m_Window;
+ int m_ControlId;
+ GUIHANDLE m_ButtonHandle;
+};
+
+class CAddonGUIProgressControl
+{
+public:
+ CAddonGUIProgressControl(CAddonGUIWindow *window, int controlId);
+ virtual ~CAddonGUIProgressControl(void) {}
+
+ virtual void SetPercentage(float fPercent);
+ virtual float GetPercentage() const;
+ virtual void SetInfo(int iInfo);
+ virtual int GetInfo() const;
+ virtual std::string GetDescription() const;
+
+private:
+ CAddonGUIWindow *m_Window;
+ int m_ControlId;
+ GUIHANDLE m_ProgressHandle;
+};
+
+class CAddonListItem
+{
+friend class CAddonGUIWindow;
+
+public:
+ CAddonListItem(const char *label, const char *label2, const char *iconImage, const char *thumbnailImage, const char *path);
+ virtual ~CAddonListItem(void) {}
+
+ virtual const char *GetLabel();
+ virtual void SetLabel(const char *label);
+ virtual const char *GetLabel2();
+ virtual void SetLabel2(const char *label);
+ virtual void SetIconImage(const char *image);
+ virtual void SetThumbnailImage(const char *image);
+ virtual void SetInfo(const char *Info);
+ virtual void SetProperty(const char *key, const char *value);
+ virtual const char *GetProperty(const char *key) const;
+ virtual void SetPath(const char *Path);
+
+// {(char*)"select();
+// {(char*)"isSelected();
+protected:
+ GUIHANDLE m_ListItemHandle;
+};
+
+class CAddonGUIWindow
+{
+friend class CAddonGUISpinControl;
+friend class CAddonGUIRadioButton;
+friend class CAddonGUIProgressControl;
+
+public:
+ CAddonGUIWindow(const char *xmlFilename, const char *defaultSkin, bool forceFallback, bool asDialog);
+ ~CAddonGUIWindow();
+
+ virtual bool Show();
+ virtual void Close();
+ virtual void DoModal();
+ virtual bool SetFocusId(int iControlId);
+ virtual int GetFocusId();
+ virtual bool SetCoordinateResolution(int res);
+ virtual void SetProperty(const char *key, const char *value);
+ virtual void SetPropertyInt(const char *key, int value);
+ virtual void SetPropertyBool(const char *key, bool value);
+ virtual void SetPropertyDouble(const char *key, double value);
+ virtual const char *GetProperty(const char *key) const;
+ virtual int GetPropertyInt(const char *key) const;
+ virtual bool GetPropertyBool(const char *key) const;
+ virtual double GetPropertyDouble(const char *key) const;
+ virtual void ClearProperties();
+ virtual int GetListSize();
+ virtual void ClearList();
+ virtual GUIHANDLE AddStringItem(const char *name, int itemPosition = -1);
+ virtual void AddItem(GUIHANDLE item, int itemPosition = -1);
+ virtual void AddItem(CAddonListItem *item, int itemPosition = -1);
+ virtual void RemoveItem(int itemPosition);
+ virtual GUIHANDLE GetListItem(int listPos);
+ virtual void SetCurrentListPosition(int listPos);
+ virtual int GetCurrentListPosition();
+ virtual void SetControlLabel(int controlId, const char *label);
+
+ virtual bool OnClick(int controlId);
+ virtual bool OnFocus(int controlId);
+ virtual bool OnInit();
+ virtual bool OnAction(int actionId);
+
+ GUIHANDLE m_cbhdl;
+ bool (*CBOnInit)(GUIHANDLE cbhdl);
+ bool (*CBOnFocus)(GUIHANDLE cbhdl, int controlId);
+ bool (*CBOnClick)(GUIHANDLE cbhdl, int controlId);
+ bool (*CBOnAction)(GUIHANDLE cbhdl, int actionId);
+
+protected:
+ GUIHANDLE m_WindowHandle;
+};
+
169 addons/library.xbmc.pvr/libXBMC_pvr.h
View
@@ -0,0 +1,169 @@
+#pragma once
+/*
+ * Copyright (C) 2005-2010 Team XBMC
+ * http://www.xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <string>
+#include <vector>
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "xbmc_pvr_types.h"
+#include "../library.xbmc.addon/libXBMC_addon.h"
+
+#ifdef _WIN32
+#define PVR_HELPER_DLL "\\library.xbmc.pvr\\libXBMC_pvr" ADDON_HELPER_EXT
+#else
+#define PVR_HELPER_DLL "/library.xbmc.pvr/libXBMC_pvr-" ADDON_HELPER_ARCH ADDON_HELPER_EXT
+#endif
+
+#define DVD_TIME_BASE 1000000
+#define DVD_NOPTS_VALUE (-1LL<<52) // should be possible to represent in both double and __int64
+
+class CHelper_libXBMC_pvr
+{
+public:
+ CHelper_libXBMC_pvr()
+ {
+ m_libXBMC_pvr = NULL;
+ m_Handle = NULL;
+ }
+
+ ~CHelper_libXBMC_pvr()
+ {
+ if (m_libXBMC_pvr)
+ {
+ PVR_unregister_me();
+ dlclose(m_libXBMC_pvr);
+ }
+ }
+
+ bool RegisterMe(void *Handle)
+ {
+ m_Handle = Handle;
+
+ std::string libBasePath;
+ libBasePath = ((cb_array*)m_Handle)->libPath;
+ libBasePath += PVR_HELPER_DLL;
+
+ m_libXBMC_pvr = dlopen(libBasePath.c_str(), RTLD_LAZY);
+ if (m_libXBMC_pvr == NULL)
+ {
+ fprintf(stderr, "Unable to load %s\n", dlerror());
+ return false;
+ }
+
+ PVR_register_me = (int (*)(void *HANDLE))
+ dlsym(m_libXBMC_pvr, "PVR_register_me");
+ if (PVR_register_me == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ PVR_unregister_me = (void (*)())
+ dlsym(m_libXBMC_pvr, "PVR_unregister_me");
+ if (PVR_unregister_me == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ TransferEpgEntry = (void (*)(const ADDON_HANDLE handle, const EPG_TAG *epgentry))
+ dlsym(m_libXBMC_pvr, "PVR_transfer_epg_entry");
+ if (TransferEpgEntry == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ TransferChannelEntry = (void (*)(const ADDON_HANDLE handle, const PVR_CHANNEL *chan))
+ dlsym(m_libXBMC_pvr, "PVR_transfer_channel_entry");
+ if (TransferChannelEntry == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ TransferTimerEntry = (void (*)(const ADDON_HANDLE handle, const PVR_TIMER *timer))
+ dlsym(m_libXBMC_pvr, "PVR_transfer_timer_entry");
+ if (TransferTimerEntry == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ TransferRecordingEntry = (void (*)(const ADDON_HANDLE handle, const PVR_RECORDING *recording))
+ dlsym(m_libXBMC_pvr, "PVR_transfer_recording_entry");
+ if (TransferRecordingEntry == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ AddMenuHook = (void (*)(PVR_MENUHOOK *hook))
+ dlsym(m_libXBMC_pvr, "PVR_add_menu_hook");
+ if (AddMenuHook == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ Recording = (void (*)(const char *Name, const char *FileName, bool On))
+ dlsym(m_libXBMC_pvr, "PVR_recording");
+ if (Recording == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ TriggerTimerUpdate = (void (*)())
+ dlsym(m_libXBMC_pvr, "PVR_trigger_timer_update");
+ if (TriggerTimerUpdate == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ TriggerRecordingUpdate = (void (*)())
+ dlsym(m_libXBMC_pvr, "PVR_trigger_recording_update");
+ if (TriggerRecordingUpdate == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ TriggerChannelUpdate = (void (*)())
+ dlsym(m_libXBMC_pvr, "PVR_trigger_channel_update");
+ if (TriggerChannelUpdate == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ TriggerChannelGroupsUpdate = (void (*)())
+ dlsym(m_libXBMC_pvr, "PVR_trigger_channel_groups_update");
+ if (TriggerChannelGroupsUpdate == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ TransferChannelGroup = (void (*)(const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP *group))
+ dlsym(m_libXBMC_pvr, "PVR_transfer_channel_group");
+ if (TransferChannelGroup == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ TransferChannelGroupMember = (void (*)(const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP_MEMBER *member))
+ dlsym(m_libXBMC_pvr, "PVR_transfer_channel_group_member");
+ if (TransferChannelGroupMember == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+#ifdef USE_DEMUX
+ FreeDemuxPacket = (void (*)(DemuxPacket* pPacket))
+ dlsym(m_libXBMC_pvr, "PVR_free_demux_packet");
+ if (FreeDemuxPacket == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+
+ AllocateDemuxPacket = (DemuxPacket* (*)(int iDataSize))
+ dlsym(m_libXBMC_pvr, "PVR_allocate_demux_packet");
+ if (AllocateDemuxPacket == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
+#endif
+
+ return PVR_register_me(m_Handle) > 0;
+ }
+
+ void (*TransferEpgEntry)(const ADDON_HANDLE handle, const EPG_TAG *epgentry);
+ void (*TransferChannelEntry)(const ADDON_HANDLE handle, const PVR_CHANNEL *chan);
+ void (*TransferTimerEntry)(const ADDON_HANDLE handle, const PVR_TIMER *timer);
+ void (*TransferRecordingEntry)(const ADDON_HANDLE handle, const PVR_RECORDING *recording);
+ void (*AddMenuHook)(PVR_MENUHOOK *hook);
+ void (*Recording)(const char *Name, const char *FileName, bool On);
+ void (*TriggerTimerUpdate)();
+ void (*TriggerRecordingUpdate)();
+ void (*TriggerChannelUpdate)();
+ void (*TriggerChannelGroupsUpdate)();
+ void (*TransferChannelGroup)(const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP *group);
+ void (*TransferChannelGroupMember)(const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP_MEMBER *member);
+#ifdef USE_DEMUX
+ void (*FreeDemuxPacket)(DemuxPacket* pPacket);
+ DemuxPacket* (*AllocateDemuxPacket)(int iDataSize);
+#endif
+
+protected:
+ int (*PVR_register_me)(void *HANDLE);
+ void (*PVR_unregister_me)();
+
+private:
+ void *m_libXBMC_pvr;
+ void *m_Handle;
+ struct cb_array
+ {
+ const char* libPath;
+ };
+};
4 addons/metadata.themoviedb.org/addon.xml
View
@@ -16,7 +16,7 @@
<extension point="xbmc.addon.metadata">
<summary lang="bg">Сваля инф. за филми от TMDB</summary>
<summary lang="en">TMDB Movie Scraper</summary>
- <summary lang="de">Film-Scraper für TheMovieDB</summary>
+ <summary lang="de">Film Scraper für TheMovieDB</summary>
<summary lang="es">Scraper de películas de TheMovieDB</summary>
<summary lang="fi">TMDB elokuvatietojen lataaja</summary>
<summary lang="hu">TMDB filmadat leolvasó</summary>
@@ -29,7 +29,7 @@
<summary lang="zh">TMDB电影刮削器</summary>
<description lang="bg">themoviedb.org е безплатна и отворена база от данни за филми. Задвижва се изцяло от потребителите си - хора като вас. Милиони хора по света всеки месец ползват TMDb, благодарение на многофункционалното API. Едновременно с това е и източник на информация за медийни центрове, като XBMC, които извличат метаинформация за филми, постери и Fanart.</description>
<description lang="en">themoviedb.org is a free and open movie database. It's completely user driven by people like you. TMDb is currently used by millions of people every month and with their powerful API, it is also used by many popular media centers like XBMC to retrieve Movie Metadata, Posters and Fanart to enrich the user's experience.</description>
- <description lang="de">TheMovieDB.org ist eine freie und offene Film-Datenbank. Sie wird nur User wie dir betrieben. TheMovieDB wird zur Zeit monatlich von Millionen genutzt. Mit der mächtigen API wird sie auch von vielen Media-Center, wie z.B. XBMC, genutzt um Filme-Meta-Daten, Poster und Fanrts zu beziehen, damit der User sein Media-Center verschönern kann</description>
+ <description lang="de">TheMovieDB.org ist eine freie und offene Filmdatenbank. Sie wird von Benutzern wie Dir betrieben. TheMovieDB wird zur Zeit monatlich von Millionen genutzt. Mit der mächtigen API wird sie auch von vielen Media-Center, wie z.B. XBMC, genutzt um Film Metadaten, Poster und Fanarts zu beziehen, damit der Benutzer sein Media-Center verschönern kann.</description>
<description lang="es">themovieDB.org es una base de datos de películas gratuita y abierta. Es una página web que se basa en contenido subido por los usuarios. TMDb es usada diariamente por mucha gente gracias a su API, que es usada por más programas aparte de XBMC para descargar información de películas así como Posters o Fanart (Fondos de escritorio basados en películas usados en distintos skins) para enriquecer la experiencia de usar XBMC.</description>
<description lang="fi">themoviedb.org on vapaa ja avoin elokuvatietokanta. Se on täysin käyttäjien ylläpitämä. TMDb:a käyttää miljoonat ihmiset joka kuukausi, sitä käytetään käyttäjäkokemuksen rikastuttamiseen monissa muissakin suosituissa XBMC:n kaltaisissa ohjelmissa lataamalla elokuvien tietoja, julisteita ja fanitaidetta.</description>
<description lang="hu">A themoviedb.org egy ingyenes és nyílt filmadatbázis. Teljes egészében olyan felhasználók töltik fel, mint például Te. A TMDb-t havonta emberek milliói használják és a hatékony API-n keresztül számos népszerű média center is, mint például az XBMC a filmadatok, poszterek, fanartképek letöltésére.</description>
101 addons/repository.xbmc.org/addon.xml
View
@@ -15,48 +15,111 @@
</extension>
<extension point="xbmc.addon.metadata">
<summary lang="bg">Инсталира добавки от XBMC.org</summary>
- <summary lang="en">Install Add-ons from XBMC.org</summary>
+ <summary lang="ca">Instal·la complements des de XBMC.org</summary>
+ <summary lang="cs">Instalovat rozšíření z XBMC.org</summary>
+ <summary lang="da">Installer tilføjelser fra XBMC.org</summary>
<summary lang="de">Installiere Add-ons von XBMC.org</summary>
+ <summary lang="el">Εγκατάσταση Πρόσθετων από το XBMC.org</summary>
+ <summary lang="en">Install Add-ons from XBMC.org</summary>
<summary lang="es">Instalar Add-ons de XBMC.org</summary>
+ <summary lang="es_MX">Installar Add-ons de XBMC.org</summary>
+ <summary lang="et">Paigalda lisasid lehelt XBMC.org</summary>
<summary lang="fi">Asenna lisäosia XBMC.org -sivustolta</summary>
- <summary lang="fr">Installe les Add-ons depuis XBMC.org</summary>
+ <summary lang="fr">Installer des extensions depuis XBMC.org</summary>
+ <summary lang="gl">Instalar Engadidos dende XBMC.org</summary>
+ <summary lang="he">התקן תוספים מאת XBMC.org</summary>
+ <summary lang="hr">Instalacija dodataka sa XBMC.org</summary>
<summary lang="hu">Kiegészítők letöltése az XBMC.org-ról</summary>
- <summary lang="ko">XBMC.org로 부터 애드온 설치</summary>
+ <summary lang="is">Setja inn viðbætur frá XBMC.org</summary>
+ <summary lang="it">Installa add-on da XBMC.org</summary>
+ <summary lang="ja">XBMC.org からアドオンをインストール</summary>
+ <summary lang="ko">XBMC.org에서 애드온 설치</summary>
+ <summary lang="lt">Idiegti papildinius i XBMC.org</summary>
<summary lang="nl">Add-ons van XBMC.org installeren</summary>
+ <summary lang="no">Legg til tillegg fra XBMC.org</summary>
<summary lang="pl">Instaluj wtyczki z XBMC.org</summary>
- <summary lang="pt">Install Add-ons from XBMC.org</summary>
+ <summary lang="pt">Instalar Add-ons de XBMC.org</summary>
+ <summary lang="pt_BR">Instale Add-ons de XBMC.org</summary>
<summary lang="ro">Instalați suplimente de la XBMC.org</summary>
- <summary lang="ru">Установить Дополнения с XBMC.org</summary>
+ <summary lang="ru">Установить дополнения с сайта XBMC.org</summary>
<summary lang="se">Installera tillägg från XBMC.org</summary>
+ <summary lang="sk">Inštalovať rozšírenia z XBMC.org</summary>
+ <summary lang="sl">Namesti dodatke iz XBMC.org</summary>
+ <summary lang="sv">Installera tillägg från XBMC.org</summary>
+ <summary lang="th">ติดตั้งโปรแกรมเสริมจาก XBMC.org</summary>
+ <summary lang="uk">Встановити додатки з XBMC.org</summary>
<summary lang="zh">从XBMC.org安装扩展功能</summary>
- <description lang="bg">Сваля и инсталира добавки от официалното хранилище за добавки на XBMC.org.[CR] Чрез него ще можете да се възползвате от системата ни от огледални сървъри, която ще ви помогне да сваляте с висока скорост, от район близо до вас.[CR] Добавките от хранилището са преминали през няколко основни теста, но въпреки това ако се натъкнете на неработеща или проблемна добавка, молим да уведомите екипа на XBMC, за да бъдат предприети необходимите действия.</description>
+ <summary lang="zh_TW">從 XBMC.org 安裝附加元件</summary>
+ <description lang="bg">Сваля и инсталира добавки от официалното хранилище за добавки на XBMC.org.[CR] Ползвайки добавката ще се възползвате от системата ни от огледални сървъри - за да сваляте с висока скорост, от сървър в район близък до Вас.[CR] Добавките от хранилището са преминали през няколко основни теста, но въпреки това ако се натъкнете на неработеща или проблемна добавка, моля уведомете екипа на XBMC, за да бъдат предприети необходимите действия.</description>
+ <description lang="ca">Baixa i instal·la complements des del repositori oficial de XBMC.org.[CR]Utilitzant el repositori oficial, podràs aprofitar els avantatges del nostre sistema de miralls per ajudar-te a tenir unes descarregues més ràpides des d'una regió propera a tu.[CR] Tots els complements d'aquest repositori han passat per un testeig bàsic, així que si trobeu algun complement que no funcioni correctament, si us plau digueu-ho a l'equip de l'XBMC per què puguin dur a terme les accions pertinents.</description>
+ <description lang="cs">Stáhnout a nainstalovat rozšíření z oficiálního repozitáře XBMC.org. [CR] Použitím oficiálního repozitáře získáte rozsáhlý systém zrcadel, který vám umožní rychlé stažení z blízkého regionu.[CR] Všechna rozšíření v repozitáři prošla základním testováním. Pokud najdete rozbitý, nebo nefunkční, rozšíření nahlaste jej týmu XBMC, abychom mohli dle potřeby zakročit.</description>
+ <description lang="da">Hent og installér addons direkte fra den Officielle XBMC.org addon lager.[CR] Ved brug af det officielle lager vil man få gavn af hurtigere downloads, da det hurtigste sted findes i et område tæt på din lokalitet. [CR] Alle addons har gennemgået visse basis test. Hvis du finder en istykker eller ødelagt addon rapportér venligst dette til Team XBMC således at de fornødne handlinger kan tages.</description>
+ <description lang="de">Downloade und installiere Add-Ons aus dem offiziellen XBMC.org Add-On Repository.[CR] Durch die Nutzung des offiziellen Repository hat man Zugriff auf das große Datei Mirror System welches schnelle Downloads aus der Nähe bereit stellt.[CR] Alle Add-Ons im Repository wurden getestet, sollte dennoch ein Add-On Fehler haben oder gar nicht funktionieren, sollte dieser Fehler an das Team XBMC gemeldet werden, damit die nötigen Schritte getroffen werden können</description>
+ <description lang="el">Λήψη και εγκατάσταση πρόσθετων από το επίσημο αποθετήριο του XBMC.org.[CR] Χρησιμοποιώντας το Επίσημο Αποθετήριο μπορείτε να εκμεταλλευτείτε τους εκτεταμένους διακομιστές αρχείων μας για ταχύτερες λήψεις από μία κοντινή σας περιοχή.[CR] Όλα τα πρόσθετα σε αυτό το αποθετήριο έχουν περάσει τις στοιχειώδεις δοκιμές, αν βρείτε ένα κατεστραμμένο ή ανενεργό πρόσθετο παρακαλούμε να το αναφέρετε στην Ομάδα XBMC ούτως ώστε να ληφθούν οι απαραίτητες ενέργειες.</description>
<description lang="en">Download and install add-ons from the Official XBMC.org addon repository.[CR] By using the official Repository you will be able to take advantage of our extensive file mirror service to help get you faster downloads from a region close to you.[CR] All addons on this repository have under gone basic testing, if you find a broken or not working addon please report it to Team XBMC so we can take any action needed.</description>
- <description lang="de">Download und installiere Add-Ons aus dem offiziellen XBMC.org Add-On Repository.[CR] Durch die Nutzung des offiziellen Repository hat man Zugriff auf das große Datei Mirror System welches schnelle Downloads aus der Nähe bereit stellt.[CR] Alle Add-Ons im Repository wurden getestet, sollte dennoch ein Add-On Fehler haben oder gar nicht funktionieren, sollte dieser Fehler an das Team XBMC gemeldet werden, damit die nötigen Schritte getroffen werden können</description>
<description lang="es">Descarga e instala add-ons desde el repositorio oficial de XBMC.[CR] Usando el repositorio oficial tendrás las ventajas de nuestro servicio de mirrors para ayudarte a conseguir unas descargas más rápidas de un sitio cercano a tí.[CR] Todos los add-ons en este repositorio han pasado por un periodo de pruebas básico, pero si encuentras algún add-on que no funciona, por favor informa de ello al equipo de XBMC para solucionar el problema.</description>
- <description lang="fi">Lataa ja asenna lisäosia virallisesta XBMC.org -lisäosasäilöstä.[CR] Käyttämällä virallista säilöä sinun on mahdollista käyttää hyväksesi meidän kattavaa tiedostojen peilauspalveluamme saavuttaaksesi korkeat latausnopeudet sinun lähialueeltasi.[CR] Kaikki tämän säilön lisäosat on testattu toimiviksi, jos löydät rikkinäisen tai "ei toimivan" lisäosan, ilmoita siitä Team XBMC:lle, jotta voimme korjata asian.</description>
- <description lang="fr">Télécharge et installe les add-ons depuis le dépôt officiel de XBMC.org.[CR] En utilisant le dépôt officiel, vous bénéficierez de notre service de fichiers miroir afin de télécharger plus rapidement depuis une région proche de vous.[CR] Tous les add-ons de ce dépôt n'ont subi que des tests basiques, si vous trouvez un add-on corrompu ou inutilisable, informez la Team XBMC afin de prendre les mesures nécessaires.</description>
- <description lang="hu">Kiegészítők letöltése és telepítése a hivatalos XBMC.org tárolóhelyről.[CR] A hivatalos tárolóhely használatával kihasználhatod szerteágazó tükör-kiszolgáló hálózatunkat, ami segít a gyorsabb letöltésben egy hozzád közelebb eső körzet használatával.[CR] Minden kiegészítő ezen a tárolóhelyen átment egy alaptesztelésen. Ha mégis hibás vagy nem működő kiegészítőt találsz, kérünk jelezd az XBMC csapatnak, hogy megtegyük a szükséges lépseket.</description>
- <description lang="ko">공식 XBMC.org 애드온 저장소로부터 애드온을 다운로드하고 설치합니다.[CR] 공식 저장소를 사용함으로써 파일 미러링 서비스를 통해 사용자에 가까운 곳으로부터 빠르게 다운로드를 받을수 있습니다.[CR] 저장소의 모든 애드온은 기본적인 확인을 했습니다. 만약 작동이 안되는 애드온을 발견하면, Team XBMC로 알려주시면, 필요한 조치를 취할것입니다.</description>
+ <description lang="es_MX">Descarga e instala add-ons del repositorio oficial XBMC.org.[CR] Al usar el repositorio oficial, tendrá la ventaja de los servicios de espejos, y así tener descargas más rápidas.[CR] Todos los add-ons en este repositorio se han probado de manera básica, si encuentra alguno que no funciona o roto, favor de reportarlo al Equipo de XBMC para poder tomar las medidas necesarias.</description>
+ <description lang="et">Lae alla ja installi lisasid ametlikust XBMC.org hoidlast.[CR] Ametliku hoidla kasutamise eeliseks on võimalus kasutada meie ulatuslikku failide peegelteenust laadides faile sulle kõige lähemast serverist.[CR] Kõik lisad selles hoidlas on läbinud elementaarse testimise. Siiski, kui sa leiad vigase või mittetöötava lisa, siis palun teavita sellest XBMC meeskonda, et me saaksime vajaliku abi osutada.</description>
+ <description lang="fi">Lataa ja asenna lisäosia virallisesta XBMC.org -lisäosasäilöstä.[CR] Käyttämällä virallista säilöä sinun on mahdollista käyttää hyväksesi meidän kattavaa tiedostojen peilauspalveluamme saavuttaaksesi korkeat latausnopeudet sinun lähialueeltasi.[CR] Kaikki tämän säilön lisäosat on testattu toimiviksi, jos löydät rikkinäisen tai &quot;ei toimivan&quot; lisäosan, ilmoita siitä Team XBMC:lle, jotta voimme korjata asian.</description>
+ <description lang="fr">Télécharger et installer des extensions à partir du dépôt officiel XBMC.org.[CR] En utilisant le dépôt officiel, vous bénéficierez de notre service de serveurs miroirs vous permettant de télécharger rapidement depuis une région proche de vous.[CR] Toutes les extensions de ce dépôt ont été testées de manière basique, si vous trouvez une extension corrompue ou inutilisable, merci d'en informer la Team XBMC afin que nous puissions prendre les mesures nécessaires.</description>
+ <description lang="gl">Descargar e instalar Engadidos dende o repositorio de engadidos oficial de XBMC.org.[CR] Empregando o repositorio oficial, vostede poderá disfrutar das vanatexes do seu extenso servizo de replicación de arquivos para axudar a descargas rápidas dende unha rexión preto a vostede.[CR] Tódolos Engadidos deste repositorio pasaron por comprobacións básicas. Se atopa algún Engadido roto ou non funcional, por favor reporteo ó equipo de XBMC para que poidan actuar en consecuencia.</description>
+ <description lang="he">התקן והורד תוספים מהמאגר הרשמי של Official XBMC.org.[CR] ע&quot;י שימוש במאגר הרשמי אתה תהנה מהיתרון של שירות נרחב של הורדת קבצים מהאיזור הקרוב אלייך.[CR] כל התוספים במאגר זה עברו בדיקה בסיסית, אם הינך מוצא תוסף שלא עובד או הורדה שלא עובדת אנא דווח זאת לצוות XBMC כדי שנוכל לתקן זאת.</description>
+ <description lang="hr">Preuzmite i instalirajte dodatke sa Službenog XBMC.org izvora.[CR] Korištenjem službenog izvora imate pristup file mirror usluzi koja vam omogućava brže preuzimanje zavisno od vaše lokacije.[CR] Svi dodatci na ovom izvoru su prošli osnovno testiranje, u slučaju da primjetite neispravan dodatak, molimo vas da to prijavite XBMC timu koji će zatim preuzeti potrebne korake.</description>
+ <description lang="hu">Kiegészítők letöltése és telepítése a hivatalos XBMC.org tárolóhelyről.[CR] A hivatalos tárolóhely használatával kihasználhatod szerteágazó tükör-kiszolgáló hálózatunkat, ami segít a gyorsabb letöltésben egy hozzád közelebb eső körzet használatával.[CR] Minden kiegészítő ezen a tárolóhelyen átment egy alaptesztelésen. Ha mégis hibás vagy nem működő kiegészítőt találsz, kérünk jelezd az XBMC csapatnak, hogy megtegyük a szükséges lépéseket.</description>
+ <description lang="is">Sækja og setja inn viðbætur frá hinu viðurkennda XBMC.org viðbóta safni.[CR] Með því að nota þetta safn getur þú nýtt þér möguleikann á fullkmonni speglunar þjónustu sem hjálpar við að sækja viðbætur hraðar frá landsvæði nálægt þér.[CR] Allar viðbætur í þessu safni hafa gengið undir grunn prófanir, if þú finnur viðbætur sem eru biluð eða virka ekki vinsamlegast látið XBMC teymið vita svo við getum gert eitthvað í málinu.</description>
+ <description lang="it">Scarica ed installa gli add-on dalla libreria ufficiale di XBMC.org[CR] Usando la libreria ufficiale avrai il vantaggio di ottenere download più veloci con mirror più vicini alla tua località.[CR] Tutti gli add-on in questa libreria sono stati sottoposti a test di base, se ne trovi uno non funzionante o corrotto, per favore riporta il problema al team di XBMC così potremmo prendere provvedimenti.</description>
+ <description lang="ja">オフィシャルの XBMC.org リポジトリからアドオンをダウンロードします。[CR] オフィシャルリポジトリを使うことで、お住まいのエリアに近いミラーサーバーから高速にアドオンをダウンロードすることが可能です。[CR] このリポジトリ上のアドオンは全て、簡単な動作テストを受けてはいますが、もしアドオンがおかしかったりうまく動作しなかったりした場合は、XBMC チームに連絡をお願いします。</description>
+ <description lang="ko">공식 XBMC.org 애드온 저장소에서 애드온을 다운로드하고 설치합니다.[CR] 공식 저장소를 사용하면 파일 미러링 서비스를 통해 사용자와 가까운 곳에서 빠르게 다운로드할 수 있습니다.[CR] 저장소의 모든 애드온은 기본적인 확인을 했습니다. 만약 작동이 안되는 애드온을 발견하면, Team XBMC로 알려주시면, 필요한 조치를 취할것입니다.</description>
+ <description lang="lt">Atsisiųskite ir įdiegite priedus iš oficialios XBMC.org saugyklos.[CR]Naudojantis oficialia saugykla, galėsite pasinaudoti pranašumu mūsų didele failų veidrodinę paslauga.[CR]Taip pat siekiame padėti jums greičiau parsisiųsti priedą iš Jūsų regiono.[CR]Visiems šioje saugykloje saugomiems priedams buvo atliktas testavimas, jei Jūs radote netaisyklingą ir nedarbinį priedą.[CR]Prašome pranešti apie tai XBMC komandai, kad mes galėtume imtis būtinų veiksmų </description>
<description lang="nl">Download en installeer add-ons van het officiële XBMC.org addon-repository.[CR] Wanneer u het officiële repository gebruikt beschikt u over onze uitgebreide mirrorservice, waardoor u snel kan downloaden van locaties in uw buurt.[CR] Alle add-ons in dit repository ondergingen standaardtests; indien u een defecte of niet-werkende add-on vindt, meld dit dan aan Team XBMC zodat zij actie kunnen ondernemen.</description>
+ <description lang="no">Last ned og installer tillegg fra den offisielle XBMC.org tillegskilden.[CR]&#10;Når du benytter den offisielle kilden drar du fordel av vår utvidede filspeilingstjeneste slik at du får raskere nedlastinger fra en server nær deg.[CR]&#10;Alle tilleg i denne kilden har gått gjennom grunnleggende testing, hvis du finner et tillegg som ikke funker vennligst rapporter det til Team XBMC så vi får sett på det.</description>
<description lang="pl">Pobieraj i instaluj wtyczki z oficjalnego repozytorium XBMC.org.[CR] Używając oficjalnego repozytorium korzystasz z serwerów lustrzanych, rozsianych po całym świecie. Wybierany jest ten, który znajduje się najbliżej Ciebie, zapewniając Ci dużą prędkość połączenia.[CR]Wszystkie wtyczki znajdujące się w tym repozytorium są testowane, ale mogą okazać się niesprawne. Zgłoś wówczas błąd, aby załoga XBMC mogła podjąć odpowiednie działanie.</description>
- <description lang="pt">Descarregue e instale add-ons do repositório oficial XBMC.org.[CR] Ao usar o repositório oficial, poderá tirar partido do extenso serviço de imagens espalhado pelo mundo, que garante sempre downloads mais rápidos de uma localização próxima da sua.[CR] Todos os add-ons deste repositório foram alvo de exaustivos testes. Na improvável hipótese de encontrar um add-on que não funcione, por favor reporte à equipa do XBMC, para que se possa proceder à resolução da situação.</description>
+ <description lang="pt">Transferir e instalar add-ons do repositório oficial XBMC.org.[CR] Ao usar o repositório oficial, os nossos servidores garantem-lhe sempre transferências rápidas a partir da localização mais próxima.[CR] Todos os Add-ons neste repositório foram alvo de testes primários. Na improvável hipótese de encontrar um Add-on que não funcione, por favor contacte a equipa do XBMC, para que se resolver a situação.</description>
+ <description lang="pt_BR">Faça downloads e instale add-ons a partir do repositório oficial do XBMC.org.[CR] Ao utilizar o repositório oficial, você será capaz de tirar proveito do nosso serviço de espelhamento de arquivos, auxiliando em downloads mais rápidos a partir de uma região perto de você.[CR] Todos os add-ons neste repositório passam por testes básicos, se você encontrar um quebrado ou que não esteja funcionando, por favor reporte para a equipe do XBMC, para que possamos tomar as ações necessárias.</description>
<description lang="ro">Descărcați și instalați suplimente din depozitul de suplimente XBMC.org oficial.[CR] Folosind depozitul (repository) oficial puteți beneficia de serviciul nostru de găzduire distribuită pentru a vă ajuta să descărcați mai repede dintr-o regiune mai apropiată de dumneavoastră.[CR] Toate suplimentele din acest depozit au trecut testele de bază, în caz că găsiți un supliment defect vă rugăm să îl raportați echipei XBMC pentru a lua măsurile necesare.</description>
- <description lang="ru">Загружайте и устанавливайте обновления с официального репозитория XBMC.org[CR] Используя официальный репозиторый вы сможете использовать преимущества распределенного хранилища для быстройй загрузки файлов из ближайшего к вам региона.[CR] Все дополнения в данном репозитории прошли тестирование. Если вы обнаружили не рабочее дополнение, пожалуйста сообщите об этом Команде XBMC.</description>
+ <description lang="ru">Загружайте и устанавливайте обновления из официального репозитория XBMC.org[CR]Используя официальный репозиторий, вы сможете воспользоваться преимуществами распределенного хранилища для быстрой загрузки файлов с ближайшего к вам сервера.[CR]Все дополнения в данном репозитории прошли тестирование. Если вы обнаружили нерабочее дополнение, сообщите об этом разработчикам XBMC.</description>
<description lang="se">Ladda ner och installera tillägg från det officiella XBMC.org tilläggsförrådet.[CR] Genom att använda det officiella förrådet kan du utnyttja fördelarna med vår utökade filspeglinstjänst för att få snabbare nedladdningar från en region nära dig.[CR] Alla tillägg på detta förråd har genomgått en enkel testprocedur, om du hittar ett trasigt eller icke fungerande tillägg uppskattar vi om du är vänlig och rapporterar det till Team XBMC så vi kan vidta nödvändiga åtgärder.</description>
+ <description lang="sk">Stiahnuť a nainštalovať rozšírenia z oficiálneho zdroja rozšírení XBMC.org.[CR] Použitím oficiálneho zdroja získavate možnosť využiť rozsiahly systém zrkadiel, ktorý Vám umožní rýchlejšie sťahovanie z Vám blízkeho regiónu.[CR] Všetky rozšírenia v tomto zdroji boli podrobené základnému testovaniu. Ak nájdete poškodené alebo nefunkčné rozšírenie, oznámte to prosím týmu XBMC aby mohol podľa potreby zakročiť.</description>
+ <description lang="sl">Prenos in namestitev dodatkov iz uradnega skladišča XBMC.org. [CR] Z uporabo uradnega skladišča, boste lahko izkoristili hitrejšo povezavo, ki bo izbrana čim bližje vas. [CR] Vsi dodatki tega odlagališča so šla čez osnovnega testiranja, če boste našli zdrobljen ali nedelujoč dodatek prosimo poročite XBMC skupini, da bomo lahko odpravili napake.</description>
+ <description lang="sv">Ladda ner och installera tillägg från det officiella XBMC.org tilläggsförrådet.[CR]Genom att använda det officiella förrådet kommer du att få fördelen att kunna använda vår omfattande spegeltjänst som kommer att hjälpa dig till snabbare nedladdningar från en plats nära dig.[CR]Alla tillägg i detta förråd har genomgått grundläggande tester. Hittar du ett trasigt eller icke fungerande tillägg, vänligen meddela detta till Team XBMC så att vi kan vidta nödvändiga åtgärder.</description>
+ <description lang="uk">Завантажити і встановити додатки з Офіційного репозиторію додатків XBMC.org.[CR] Використовуючи Офіційний Репозиторій ви отримаєте перевагу надану нашими дзеркальними серверами, які забезпечать вам швидке завантаження із найближчого до вас регіону.[CR] Всі додатки в цьому Репозиторії пройшли лише базове тестування. Якщо ви знайшли зламаний або непрацюючий додаток, будь-ласка повідомте про це Команду XBMC щоб ми могли вжити потрібних заходів.</description>
<description lang="zh">从官方XBMC.org扩展功能库下载和安装扩展功能。[CR] 通过官方程序库你将能利用我们广泛的镜像服务优势,使你能够就近下载资源。[CR] 官方库中的所有扩展功能模块都经过了基本的测试,如果你发现有损坏或不能正常工作的插件请向XBMC开发团队报告,以便及时处理。</description>
- <disclaimer lang="en">Team XBMC did not make all the add-ons on this repository and are not responsible for their content</disclaimer>
+ <description lang="zh_TW">從 XBMC.org 官方的附加元件庫下載並安裝附加元件。[CR] 使用官方的附加元件庫你可以從離你較近的檔案鏡像伺器以較快的速度下載附加元件。[CR] 在這個附加元件庫中的附加元件都經過簡單的測試,如果你發現損壞或無法正常工作的附加元件,請回報給 XBMC 團隊,以讓 XBMC 團隊能做一些必須的處置。</description>
+ <disclaimer lang="bg">Team XBMC (Екипът зад XBMC) не е автор на всички добавки в хранилището и не носи отговорност за съдържанието им</disclaimer>
+ <disclaimer lang="ca">L'equip de l'XBMC no ha fet tots els complements d'aquest repositori i per tant no són responsables del seu contingut.</disclaimer>
+ <disclaimer lang="cs">XBMC tým nevytvořil všechna rozšíření v tomto repozitáři a není zodpovědný za jejich obsah</disclaimer>
+ <disclaimer lang="da">Team XBMC har ikke lavet alle tilføjelser i dette lager og er ikke ansvarlige for deres indhold</disclaimer>
<disclaimer lang="de">Team XBMC hat nicht alle Add-Ons aus dem Repository erstellt und ist für deren Inhalt nicht verantwortlich</disclaimer>
- <disclaimer lang="es">El equipo de XBMC no ha hecho todos los Addons en este repositorio y por consecuente no són responsables de su contenido</disclaimer>
- <disclaimer lang="fr">La Team XBMC n'est pas l'auteur de tous les add-ons de ce dépôt et n'est pas responsable de leur contenu</disclaimer>
- <disclaimer lang="hu">Nem minden itt található kiegészítőt az XBMC csapat készített és nem vállal felelőséget azok tartalmáért</disclaimer>
+ <disclaimer lang="el">Η Ομάδα XBMC δεν δημιούργησε όλα τα πρόσθετα σε αυτό το αποθετήριο συνεπώς δεν είναι υπεύθυνοι για το περιεχόμενό τους</disclaimer>
+ <disclaimer lang="en">Team XBMC did not make all the add-ons on this repository and are not responsible for their content</disclaimer>
+ <disclaimer lang="es">El equipo de XBMC no ha hecho todos los Addons en este repositorio y no son responsables de su contenido</disclaimer>
+ <disclaimer lang="es_MX">El equipo de XBMC no hizo todos los add-ons en este repositorio y no es responsable de su contenido</disclaimer>
+ <disclaimer lang="et">XBMC meeskond ei teinud kõiki lisasid selles hoidlas ja ei vastuta ka nende sisu eest.</disclaimer>
+ <disclaimer lang="fi">Team XBMC ei ole tehnyt kaikkia tässä säilössä olevia lisäosia, eikä siten ole vastuullinen kyseisten lisäosien sisällöstä</disclaimer>
+ <disclaimer lang="fr">La Team XBMC n'est pas l'auteur de toutes les extensions de ce dépôt et n'est pas responsable de leur contenu</disclaimer>
+ <disclaimer lang="gl">O equipo de XBMC non fai tódolos Engadidos deste repositorio e non é responsable do seu contido</disclaimer>
+ <disclaimer lang="he">צוותXBMC לא יצר את כל התוספים במאגר זה והם אינם אחראים על תוכנם</disclaimer>
+ <disclaimer lang="hr">XBMC tim nije autor svih dodataka te kao takav ne odgovara za njihov sadržaj</disclaimer>
+ <disclaimer lang="hu">Nem minden itt található kiegészítőt az XBMC csapat készített és nem vállal felelősséget azok tartalmáért</disclaimer>
+ <disclaimer lang="is">XBMC teymið gerir ekki allar þessar viðbætur og er ekki ábyrgt fyrir innihaldi þeirra.</disclaimer>
+ <disclaimer lang="it">Il team di XBMC non ha creato tutti gli add-on di questa libreria e non è responsabile per il loro contenuto</disclaimer>
+ <disclaimer lang="ja">XBMC チームが、このリポジトリ上の全アドオンを作ったわけではありません。また、その内容についても責任は負いかねます。</disclaimer>
<disclaimer lang="ko">Team XBMC는 저장소의 모든 애드온을 만들지 않았으며, 애드온 컨텐츠에 대한 책임이 없습니다.</disclaimer>
+ <disclaimer lang="lt">XBMC komanda netestavo priedų šioje saugykloje ir neatsako arba nėra atsakinga už jų turinį</disclaimer>
<disclaimer lang="nl">Team XBMC heeft niet alle add-ons in dit repository geschreven en is niet verantwoordelijk voor hun inhoud.</disclaimer>
+ <disclaimer lang="no">Team XBMC har ikke produsert alle tilleggene i denne kilden og er ikke ansvarlig for deres innhold</disclaimer>
<disclaimer lang="pl">Załoga XBMC nie tworzy wszystkich dodatków i nie bierze odpowiedzialności za ich zawartość</disclaimer>
- <disclaimer lang="pt">A equipa XBMC não desenvolveu todos os add-ons neste repositório e não é responsável pelo seu conteúdo.</disclaimer>
+ <disclaimer lang="pt">A equipa XBMC não desenvolveu todos os Add-ons neste repositório e não é responsável pelo seu conteúdo.</disclaimer>
+ <disclaimer lang="pt_BR">Equipe do XBMC não produziu todos os add-ons do repositório, não sendo responsáveis ​​por seu conteúdo</disclaimer>
<disclaimer lang="ro">Echipa XBMC nu a creat toate aceste suplimente din acest depozit și nu este responsabilă pentru conținutul lor.</disclaimer>
- <disclaimer lang="ru">Команда XBMC не является автором всех дополнений в данном репозитории и не ответственна за их содержимое.</disclaimer>
+ <disclaimer lang="ru">Разработчики XBMC не являются авторами всех дополнений в данном репозитории и не несут ответственность за их содержимое.</disclaimer>
<disclaimer lang="se">Team XBMC har inte skapat alla tillägg på detta förråd och är inte ansvariga för deras innehåll</disclaimer>
+ <disclaimer lang="sk">Team XBMC nevytvoril všetky rozšírenia v tomto zdroji nie je zodpovedný za ich obsah</disclaimer>
+ <disclaimer lang="sl">Skupina XBMC ni naredila vse dodatkov na tem skladišču. In to ni skladišče z njihovo vsebino</disclaimer>
+ <disclaimer lang="sv">Team XBMC har inte gjort alla tillägg och är inte ansvariga för innehållet i dessa.</disclaimer>
+ <disclaimer lang="uk">Зауважте, що не всі додатки в цьому Репозиторії створені Командою XBMC, і тому Команда не несе відповідальності за їх вміст.</disclaimer>
<disclaimer lang="zh">本库中扩展功能模块并非完全由XBMC开发团队开发,因此不对相关内容承担责任</disclaimer>
+ <disclaimer lang="zh_TW">這個附加元件庫的附加元件並非全部由 XMBC 團隊製作的,所以我們不對這些內容負責。</disclaimer>
<platform>all</platform>
</extension>
</addon>
57 addons/screensaver.rsxs.euphoria/addon.xml
View
@@ -13,32 +13,69 @@
library_osx="Euphoria.xbs"/>
<extension point="xbmc.addon.metadata">
<summary lang="bg">Колкото халюциногенен може да бъде един скрийнсейвър</summary>
+ <summary lang="ca">Quant al més psicodèlic dels estalvis de pantalla</summary>
+ <summary lang="cs">Nejdivočejší šetřič obrazovky všech dob</summary>
+ <summary lang="da">Omtrent så psykedelisk som en pauseskærm kan blive.</summary>
+ <summary lang="de">So psychedelisch wie ein Bildschirmschoner nur sein kann</summary>
+ <summary lang="el">Όσο πιο ψυχεδελική μπορεί να είναι μία προφύλαξη οθόνης</summary>
<summary lang="en">About as psychedelic as screensavers get</summary>
<summary lang="es">El más psicodélico de los salvapantallas</summary>
+ <summary lang="es_MX">Tan psicodélico como cualquier protector de pantalla debería</summary>
+ <summary lang="et">Nii psühhedeelne kui üks ekraanisäästja olla saab</summary>
<summary lang="fi">Mahdollisesti kaikkein psykedeelisin näytönsäästäjä</summary>
- <summary lang="fr">Le plus psychédélique des écrans de veille</summary>
+ <summary lang="fr">Difficilement plus psychédélique comme économiseur d'écran</summary>
+ <summary lang="gl">Máis ou menos tan psicodélico como o pode ser un gardapantallas</summary>
+ <summary lang="he">זהו שומר המסך הפסיכודאלי ביותר שיש</summary>
+ <summary lang="hr">Psihodeličan koliko čuvar zaslona može biti </summary>
<summary lang="hu">A legpszihedelikusabb képernyővédő</summary>
+ <summary lang="it">Quanto di più psichedelico possa essere un salvaschermo</summary>
+ <summary lang="ja">スクリーンセーバーはここまでサイケになれる</summary>
<summary lang="ko">싸이키델릭 화면보호기</summary>
+ <summary lang="lt">Psihodeline užsklanda nunešanti stoga</summary>
<summary lang="nl">Een meer psychedelische schermbeveiliging vindt u niet</summary>
+ <summary lang="no">Så psykadelisk som en skjermsparer kan bli</summary>
<summary lang="pl">Tak psychodeliczny jak tylko się da</summary>
- <summary lang="pt">A mais psicadélica protecção de ecrã.</summary>
- <summary lang="ro">Un protector ecran cât se poate de psihedelic</summary>
- <summary lang="ru">Настолько психаделично, насколько такой может быть заставка</summary>
+ <summary lang="pt">Um protector de ecrã mais psicadélico do que este? Impossível.</summary>
+ <summary lang="pt_BR">Protetor de Tela Psicodélico</summary>
+ <summary lang="ro">Un protector ecran cât se poate de năucitor</summary>
+ <summary lang="ru">Самая психоделическая в мире заставка</summary>
<summary lang="se">Ungefär så psykedelisk som en skärmsläckare kan bli</summary>
+ <summary lang="sk">Tak psychodelický ako to len ide</summary>
+ <summary lang="sl">Najbolj psihadelični ohranjevalnik zaslona.</summary>
+ <summary lang="sv">Ungefär så psykedelisk som en skärmsläckare kan bli</summary>
+ <summary lang="uk">Настільки психоделічна наскільки можливо для заставки</summary>
<summary lang="zh">最具迷幻效果的屏幕保护程序</summary>
- <description lang="bg">Точно колкото може един скрийнсейвър. mogumbo смяташе, че неговият Plasma saver е върхът, но този е по-смущаващ. Препоръчвам ви да вземете една торбичка за повръщане, преди да зазяпате в скрийнсейвъра по-дълго отколкото трябва.</description>
+ <description lang="bg">Точно колкото може един скрийнсейвър. mogumbo смяташе, че неговият &quot;Plasma saver&quot; е върхът, но този е по-смущаващ. Препоръчвам Ви да вземете една торбичка/лиген, преди да зазяпате в скрийнсейвъра по-дълго отколкото трябва.</description>
+ <description lang="ca">Aquest és probablement el més psicodèlic dels estalvis de pantalla. mogumbo va pensar que el seu estalvi Plasma estava al capdamunt, però aquest és més nauseabund. Serà millor que agafi una bossa per als marejos si ha d'estar molta estona mirant-lo.</description>
+ <description lang="cs">Asi nejdivočejší šetřič obrazovky všech dob. Použití plazmového šetřiče bývalo vrcholem, ale tento spořič je ještě více zneklidňující. Připravte si pytlíky na zvracení pokud se jej rozhodnete sledovat příliš dlouho.</description>
+ <description lang="da">Dette er omtrent så psykedelisk som en pauseskærm kan blive. Mogumbo troede hans Plasma pauseskærm var i toppen af skalaen, men denne er endnu mere kvalmende. Du må hellere finde en luftsygepose inden du kigger alt for længe på denne.</description>
+ <description lang="de">In etwa so ​​psychedelisch wie ein Bildschirmschoner nur sein kann. mogumbo dachte, sein Plasma-Bildschirmschoner wäre bereits abstoßend, aber dieser hier ist noch verabscheuenswürdiger. Kram' besser schon mal eine Kotztüte hervor, bevor Du diesen Bildschirmschoner zu lange anstarrst.</description>
+ <description lang="el">Αυτή είναι η πιο ψυχεδελική προφύλαξη οθόνης που υπάρχει. Ο mogumbo νόμιζε ότι η Plasma προφ. οθόνης του ήταν η κορυφαία, αλλά αυτή είναι ακόμα πιο μπερδεμένη. Καλύτερα να βρείτε μία από εκείνες τις σακούλες για τη ναυτία προτού την κοιτάξετε για πολλή ώρα.</description>
<description lang="en">This is about as psychedelic as screensavers get. mogumbo thought his Plasma saver was at the top of the scale, but this one is even more nauseating. You'd better find one of those air sickness bags before you stare at this one for too long.</description>
- <description lang="es">Este es probablemente el más psicodélico de los salvapantallas. mogumbo (el autor) pensó que su protector 'Plasma' estaba en lo mas alto, pero éste es más repugnante. Será mejor que cogas una bolsa para los mareos si vas a estar mucho tiempo viéndolo.</description>
+ <description lang="es">Este es probablemente el más psicodélico de los salvapantallas. mogumbo (el autor) pensó que su protector 'Plasma' estaba en lo mas alto, pero éste es más repugnante. Será mejor que cojas una bolsa para los mareos si vas a estar mucho tiempo viéndolo.</description>
+ <description lang="es_MX">Esto es tan psicodélico como un protector de pantalla debe ser, mogumbo pensó que su protector Plasma estaba en la cima del mundo, pero éste es aún más nauseabundo. Deberías conseguir una bolsa para mareos antes de quedarte observando por mucho tiempo.</description>
+ <description lang="et">See on nii psühhedeelne kui üks ekraanisäästja olla saab. mogumbo arvas, et tema Plasma säästja oli tippude tipp, aga see on isegi rohkem iiveldama ajav. Parem otsi endale üks neist lennuki oksekottidest enne kui liiga kauaks seda siin vaatama jääd.</description>
<description lang="fi">Tämä on mahdollisesti niin psykedeelinen kuin vain näytönsäästäjä voi olla. mogumbo luuli, että hänen Plasma-näytönäästäjänsä oli asteikon huipulla, mutta tämä ohittaa senkin. Oksennuspussin hakeminen on suositeltavaa ennen pitkäaikaista tuijottamista.</description>
- <description lang="fr">Un écran de veille psychédélique. mogumbo croyait son économiseur Plasma en haut de l'échelle mais, celui-ci est encore plus nauséeux. Mieux vaut se munir d'un de ces sacs anti-mal-de-l'air avant de regarder celui-ci trop longtemps.</description>
+ <description lang="fr">En terme d'économiseur, on fait difficilement plus psychédélique. mogumbo croyait son économiseur Plasma tout en haut de l'échelle mais, celui-ci donne encore plus la nausée. Mieux vaut se munir d'un de ces sachets pour le mal de l'air avant de le regarder trop longtemps.</description>
+ <description lang="gl">Este é máis ou menos tan psicodélico como pode selo un gardapantalla. mogumbo pensou que o seu gardapantallas Plasma estaba arriba de todo na escala, pero este é incluso máis mareante. Será millor que colla unha bolsa de ventilzación ante de quedarse mirando a este demasiado tempo.</description>
+ <description lang="he">זהו שומר המסך הפסיכודאלי ביותר שיש. מוגמבו חשב ששומר מסך הפלזמה שלו הוא הטוב מסוגו, אבל שומר מסך זה הוא אפילו מבחיל יותר. עדיף שתשיג לעצמך כמה שקיות הקאה לפני שתבהה בזה יותר מדי זמן.</description>
+ <description lang="hr">Psihodeličan koliko čuvar zaslona može biti. mogumbo kroz svoj plazma čuvar zaslona je bio vrh, ali ovaj je odvratan. Bilo bi vam bolje da pronađete jednu od onih vrećica za mučninu što dijele u avionima prije nego počnete zuriti u ovaj.</description>
<description lang="hu">Ez a legpszihedelikusabb képernyővédő. mogumbo úgy gondolta, hogy a Plasma képernyővédő van a lista tetején,de ez még inkább kábító. Jobb ha keresel egy légibetegség zacskót mielőtt túl sokáig néznéd a képernyőt.</description>
+ <description lang="it">Questo è quanto di più psichedelico possa essere un salvaschermo. mogumbo pensava che il suo salvaschermo 'Plasma' fosse al massimo della psichedelicità, ma questo è anche più nauseante. Faresti meglio a cercare uno di quei sacchetti per il mal d'aria prima di fissarlo troppo a lungo.</description>
+ <description lang="ja">This is about as psychedelic as screensavers get. mogumbo thought his Plasma saver was at the top of the scale, but this one is even more nauseating. You'd better find one of those air sickness bags before you stare at this one for too long.</description>