Age | Commit message (Collapse) | Author |
|
Fix tests
|
|
|
|
Before was there in database the "broken" value from json checked for presence only.
As them sould always present was every addon marked as broken.
This now done by database update and changed to current types.
Also is a fix call added to change previous changed database and have correct again.
|
|
This increases the database version to 33 and adds an update call to change the "metadata" in json format.
|
|
This changes the way the field of the addon.xml of `<extensions point="addon_type_name">...</extension>` is stored in the database.
Previously, only the addon type string was stored as "extension" in json and any sub-data was stored separately under "extrainfo". This makes it difficult to process more complex data.
This introduces a way to save the complete extension's in a json format and when reading all the data of the main addon type is available.
**WARNING:**
A way has to be introduced in order to update the add-on database appropriately, otherwise the content of the previous version is no longer visible in Kodi.
As a temporary test way, the old "Addons32.db" can be deleted so that it is recreated.
|
|
This changes to the following functions from IAddon to CAddonInfo:
- CAddonManager::AddonsFromRepoXML
- CRepository::FetchIfChanged
- CRepository::FetchIndex
- CAddonDatabase::UpdateRepositoryContent
- SerializeMetadata (AddonDatabase.cpp)
The main reason is to have CAddonInfo available on "SerializeMetadata" and to have all its content available within the database (future changes).
In addition, this also has other advantages:
- The performance is significantly better because the associated addon class does not have to be created for each individual repo addon
- It is a step further to separate add-on management and usage
- The background is that the CAddon class (and associated child class) should only be created when actually used
- Adjusted the addon manager a little to separate the contained parts into groups
- The aim is to have a clearer overview in the addon manager which parts are used externally and which parts are only used internally for management
It is easy to contribute to this, since this chain of use is not very cross-branched.
|
|
[addons] fix IsSystemAddon not including optional system addons
|
|
There is a very small probability of collisions using nanosecond
ranges on systems where system timer resolution is 100 nsec or
greater. This might be the reason of occassionally failing
TestSysfsPath tests even with #18011 in place.
Let's use properly generated 12-char pseudorandom string derived
from RandomAlphaNumString.
Inspired by: https://ideone.com/LxhX15
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Populate PVR recording year tag value only with the PVRRecording.SetYear() value.
|
|
[tvOS][Top Shelf] Fix missing thumbs + clean up
|
|
add new IsOptionalSystemAddon
|
|
|
|
[addons][filesystem] fix windows build about his RemoveDirectory macro
|
|
|
|
As there is a API function about "RemoveDirectory" becomes it in conflict with Windows if used.
This error then come:
```
error C2039: 'RemoveDirectoryW': is not a member of 'kodi::vfs'
```
|
|
Following the ULARGE_INTEGER -> LARGE_INTEGER migration in
CDatetimeSpan and CDateTime, replace unsigned divisors with
signed ones, so that undesirable conversion to unsigned does
not take place.
|
|
It is logically incorrect to use ULARGE_INTEGER in CDateTime and
CDateTimeSpan, because the QuadPart can be negative (for example,
assigning the negative timzeone offset in seconds to a CDateTimeSpan).
We also rename private member functions ToULargeInt() and FromULargeInt()
to ToLargeInt() and FromLargeInt().
Changes were made using following shell commands:
sed -i 's/ULARGE_INTEGER/LARGE_INTEGER/g' xbmc/XBDateTime.*
sed -i 's/ToULargeInt(/ToLargeInt(/g' xbmc/XBDateTime.*
sed -i 's/FromULargeInt(/FromLargeInt(/g' xbmc/XBDateTime.*
|
|
The test logic compares 'absolute' timestamps with timestamps
corrected by timezone offset in FileTimeTolocalFileTime().
This leads to the test failure if TZ environment variable is set
to UTC-01:00 to UTC-13:00 (i.e, every location eastern of Greenwich):
$ cat ./test-tz.sh
for i in `seq -13 1 13`
do
if [ $i -eq 0 ]; then
export TZ="UTC+00:00"
elif [ $i -lt 0 ]; then
export TZ=$(printf "UTC-%02d:00" $(( $i * -1)) )
else
export TZ=$(printf "UTC+%02d:00" $i )
fi
./kodi-test --gtest_filter="TestDateTime.FileTimeOperators" \
1>/dev/null 2>&1
[ $? -eq 0 ] && RET1="Passed" || RET1="Failed"
./kodi-test --gtest_filter="TestDateTime.SetFromUTCDateTime" \
1>/dev/null 2>&1
[ $? -eq 0 ] && RET2="Passed" || RET2="Failed"
echo "$TZ: $RET1 $RET2"
done
$ ./test-tz.sh
UTC-13:00: Failed Failed
UTC-12:00: Failed Failed
UTC-11:00: Failed Failed
UTC-10:00: Failed Failed
UTC-09:00: Failed Failed
UTC-08:00: Failed Failed
UTC-07:00: Failed Failed
UTC-06:00: Failed Failed
UTC-05:00: Failed Failed
UTC-04:00: Failed Failed
UTC-03:00: Failed Failed
UTC-02:00: Failed Failed
UTC-01:00: Failed Failed
UTC+00:00: Passed Passed
UTC+01:00: Passed Passed
UTC+02:00: Passed Passed
UTC+03:00: Passed Passed
UTC+04:00: Passed Passed
UTC+05:00: Passed Passed
UTC+06:00: Passed Passed
UTC+07:00: Passed Passed
UTC+08:00: Passed Passed
UTC+09:00: Passed Passed
UTC+10:00: Passed Passed
UTC+11:00: Passed Passed
UTC+12:00: Passed Passed
UTC+13:00: Passed Passed
Time zones western of Greenwich do not produce the test failure
because 'extern long timezone' is greater than zero.
This commit fixes the test logic following the original intent of
the test. The dateTime3 local object used in comparison is constructed
from the timestamp corrected by the timezone so 'apples-to-apples'
comparison takes place:
UTC-13:00: Passed Failed
UTC-12:00: Passed Failed
UTC-11:00: Passed Failed
UTC-10:00: Passed Failed
UTC-09:00: Passed Failed
UTC-08:00: Passed Failed
UTC-07:00: Passed Failed
UTC-06:00: Passed Failed
UTC-05:00: Passed Failed
UTC-04:00: Passed Failed
UTC-03:00: Passed Failed
UTC-02:00: Passed Failed
UTC-01:00: Passed Failed
UTC+00:00: Passed Passed
UTC+01:00: Passed Passed
UTC+02:00: Passed Passed
UTC+03:00: Passed Passed
UTC+04:00: Passed Passed
UTC+05:00: Passed Passed
UTC+06:00: Passed Passed
UTC+07:00: Passed Passed
UTC+08:00: Passed Passed
UTC+09:00: Passed Passed
UTC+10:00: Passed Passed
UTC+11:00: Passed Passed
UTC+12:00: Passed Passed
UTC+13:00: Passed Passed
|
|
[addons][language] fix crash if selected language addon no more present
|
|
|
|
|
|
[addons][platform] fix stupid wrong min version increase
|
|
Before has it after failed `GetAddon` call used the `CAddon` class to get his ID and to use on other calls.
As we never know exact why `GetAddon` failed can we never sure that related class is really created.
|
|
Previously, if the language addon was deleted for any reason, Kodi crashed on startup.
This adds a check that the add-on is actually there.
Here the backtrace about crash before:
```
\#0 CLangInfo::SetLanguage (this=0x55555ad37eb0, language="resource.language.de_de", reloadServices=false) at /home/alwin/Development/Kodi/kodi-Matrix/xbmc/LangInfo.cpp:670
\#1 0x0000555557ad51eb in CApplication::LoadLanguage (this=0x55555ad34c20, reload=false) at /home/alwin/Development/Kodi/kodi-Matrix/xbmc/Application.cpp:4915
\#2 0x0000555557abdbd0 in CApplication::Initialize (this=0x55555ad34c20) at /home/alwin/Development/Kodi/kodi-Matrix/xbmc/Application.cpp:737
\#3 0x0000555557635500 in XBMC_Run (renderGUI=true, params=...) at /home/alwin/Development/Kodi/kodi-Matrix/xbmc/platform/xbmc.cpp:46
\#4 0x0000555556e0b08c in main (argc=1, argv=0x7fffffffdf38) at /home/alwin/Development/Kodi/kodi-Matrix/xbmc/platform/posix/main.cpp:77
```
|
|
Before have I'm wrongly increased min version! SORRY!
This swaps them from min to normal.
As there was no version increase on inputstream.adaptive (where used), is no place
attacked about this mistake.
|
|
[addons][vfs] cleanup API, improve "C" interface, not use void* direct as value
|
|
[addons][gui] cleanup API, improve "C" interface, documentation rework for Doxygen
|
|
fix ListItem.AddonLifecycleDesc infolabel
|
|
[vfs][addons][audiodecoder] continue addon search if open of extension failed
|
|
potential read access violation with an addon path setting
|
|
Fix event server unable to send raw key strikes
|
|
|
|
|
|
This thought for the case that a addon tried with a extension where can also be on other types.
Before has it returned the function and no further search to find process part.
The error and fix specially visible by *.iso's and use of audiodecoder.sacd with vfs.libarchive (where iso support added).
Before has it called the audiodecoder where fails on a normal file ISO and returned the scan function as unsupported.
With this change here is the search continued and try then also with other addons and with Kodi's own VFS support.
|
|
|
|
There becomes increased:
- ADDON_INSTANCE_VERSION_VFS = 3.0.0
- ADDON_INSTANCE_VERSION_VFS_MIN = 3.0.0
- ADDON_GLOBAL_VERSION_FILESYSTEM = 1.1.5
|
|
kodi::vfs::RemoveDirectory
There becomes another "C" part added about (to prevent min version change")
where then called if kodi::vfs::RemoveDirectory(..., true).
|
|
To make it a bit cleaner, fix few doxygen parts and add few new text parts.
|
|
This place the "C" parts to "kodi/c-api/addon-instance/vfs.h" to have
clean for other languages and to confirm a correct ABI between Kodi
and addon used.
|
|
There becomes the "void*" usage replaced to a "C define VFS_FILE_HANDLE" and "C++ using VFSFileHandle".
Also is a from addon used memory pointer changed from void* to uint8_t*.
On other parts where only relate to Kodi is changed to KODI_HANDLE.
So is on addon not direct a void* used and more clean on other languages.
|
|
There was before on few IO types a void* used to write/read where makes it harder for other
languages and more unsafe in C/C++.
This change every for addons usable part in a own function where the void* no more
needed.
|
|
Before was the "C" structure used, this change to use the
C++ translation class about, done to match the with PVR
started style about.
|
|
There becomes the following stat parts support added to STAT_STRUCTURE:
- isBlock (S_IFBLK)
- isCharacter (S_IFCHR)
- isFifo (S_IFIFO)
- isRegular (S_IFREG)
- isSocket (S_IFSOCK)
To get file serial number (if available).
And then also with STAT_STRUCTURE/FileStatus used on VFS addon stat calls.
|