Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
[addons] various fixes/improvements
|
|
|
|
uninstall/disable
|
|
disable it.
|
|
done (2 dialogs not required)
|
|
|
|
|
|
|
|
information OSD
|
|
|
|
Allow repositories to have more than one (conditional) addons.xml sources
|
|
lookandfeel.skincolors/skintheme/soundskin
|
|
|
|
|
|
and there's no need for a critical section.
|
|
xbmc.addon version.
|
|
std::string (without .c_str())
|
|
This implements DisableAddon and IsAddonDisabled in AddonMgr. Both functions will trigger the database routines
and cache the current addon state instead of doing the database query again. In case the disabled cache does not
know about the current state the database routine will be used to retrieve it.
|
|
[Langinfo] Use preferred audio/subtitle language for dvds and blurays.
|
|
CAddonMgr::GetTranslatedString.
|
|
|
|
Log registered repos on AddonManager::Init
|
|
|
|
|
|
is obsolete and not in use anymore.
|
|
Move TokenizeStringUtils and replace CStdStrings by std::strings.
|
|
There were nearly 200 places in the code where testing for a substring was
being performed using a construct of the form
CStdString::Left(len).Equals("string")
or the related CStdString methods Mid or Right. These are bad for performance
because they involve allocating a heap block for the duration of the
expression evaluation, for the purpose of holding the substring, and then
freeing it again.
These would need replacing anyway because CStdString is being phased out
(PR #3225), and there is also the maintainability issue that developers need
to keep the string lengths in step with the string literals. This latter
point is also true of a number of instances in the code of
std::string::compare(0, len, "string") == 0
Now that the StartsWith() and EndsWith() methods in StringUtils have been
made more efficient, it is worth replacing both the above constructs with
such calls. This patch does so, using the case-sensitive versions where
std::string::compare was used, where the bUseCase parameter was specified
true in Equals() calls, or where the string literal passed to Equals()
contained no alphabetic characters. For the sake of compatibility, the
remaining calls have been left using the case-insensitive versions ("NoCase"
suffix to the method name), although these may be worth reviewing on a
case-by-case basis.
The majority of the changes here were achieved using a sophisticated search
and replace, which will hopefully minimise any bugs introduced in the
conversion.
This patch is expected to have wide-reaching performance benefits. One
benchmark (that can't pretend to exercise all ~200 improvements) is the time
to open the songs library: on a Raspberry Pi, this patch improves this time
by 12% (down from 13% for a previous version of this patch that also reduced
the number of calls to tolower()).
|
|
Faster string comparison functions in StringUtils
|
|
The methods EqualsNoCase(), StartsWith() and EndsWith() required quite a lot
of unncessary creation and destruction of std::strings, whether it be the
creation of a temporary copy that could be forced to lower-case, a temporary
copy that was a substring of one of the inputs, or just marshalling a
string literal argument into a std::string.
These functions don't appear to be used all that much at the moment; when I
profiled opening the songs library, I saw only a 1% improvement, which was
within the sampling noise threshold. But with PR #3225 and PR #3290 coming
along, that looks set to change. Once the functions are being called millions
of times, those heap operations really start to get noticeable.
Also, split StartsWith() and EndsWith() into multiple separately-named
functions, according to case sensitivity. Formerly, there was an optional
parameter (default off) to indicate that these operations were
case-*sensitive*, which is actually computationally simpler to perform. Now
the naming convention is consistent with EqualsNoCase:
StartsWith - case-sensitive
EndsWith - case-sensitive
StartsWithNoCase - case-insensitive
EndsWithNoCase - case-insensitive
With the case-sensitive versions now easier to type, it will hopefully
encourage future developers to use them in preference.
|
|
|
|
|
|
|
|
Remove URIUtils::GetDirectory(..) function without return value
|
|
|
|
|
|
context menu: cleanup & initial reorganisation
|
|
Allow empty String values to be read in XML tags
|
|
values
|
|
|
|
|
|
CScreensaver::Clone() is virtual and overrides IAddon::Clone()
|
|
Also adds missing m_hashes member.
|
|
The parent parameter was misrepresented throughout the code (sometimes called parent, sometimes called self) and was only used as a boolean condition in CAddonDLL
|
|
|
|
|
|
|