mirror of
https://github.com/wiiu-env/WiiUPluginLoaderBackend.git
synced 2026-09-08 11:59:16 -05:00
Update plugin (un)loading logic to keep plugins loaded if possible
This commit is contained in:
@@ -35,7 +35,7 @@ extern "C" PluginBackendApiErrorType WUPSLoadAndLinkByDataHandle(const wups_back
|
||||
|
||||
for (const auto &pluginData : gLoadedData) {
|
||||
if (pluginData->getHandle() == handle) {
|
||||
gLoadOnNextLaunch.insert(pluginData);
|
||||
gLoadOnNextLaunch.push_back(pluginData);
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ std::shared_ptr<T> make_shared_nothrow(Args &&...args) noexcept(noexcept(T(std::
|
||||
}
|
||||
|
||||
template<typename Container, typename Predicate>
|
||||
typename std::enable_if<std::is_same<Container, std::forward_list<typename Container::value_type>>::value, bool>::type
|
||||
std::enable_if_t<std::is_same_v<Container, std::forward_list<typename Container::value_type>>, bool>
|
||||
remove_first_if(Container &container, Predicate pred) {
|
||||
auto it = container.before_begin();
|
||||
|
||||
@@ -78,7 +78,7 @@ remove_first_if(Container &container, Predicate pred) {
|
||||
}
|
||||
|
||||
template<typename Container, typename Predicate>
|
||||
typename std::enable_if<std::is_same<Container, std::set<typename Container::value_type>>::value, bool>::type
|
||||
std::enable_if_t<std::is_same_v<Container, std::set<typename Container::value_type, typename Container::key_compare>>, bool>
|
||||
remove_first_if(Container &container, Predicate pred) {
|
||||
auto it = container.begin();
|
||||
while (it != container.end()) {
|
||||
@@ -92,7 +92,7 @@ remove_first_if(Container &container, Predicate pred) {
|
||||
}
|
||||
|
||||
template<typename Container, typename Predicate>
|
||||
typename std::enable_if<std::is_same<Container, std::vector<typename Container::value_type>>::value, bool>::type
|
||||
std::enable_if_t<std::is_same_v<Container, std::vector<typename Container::value_type>>, bool>
|
||||
remove_first_if(Container &container, Predicate pred) {
|
||||
auto it = container.begin();
|
||||
while (it != container.end()) {
|
||||
@@ -129,6 +129,12 @@ T pop_locked_first_if(std::mutex &mutex, std::vector<T> &container, Predicate pr
|
||||
return result;
|
||||
}
|
||||
|
||||
template<typename Container>
|
||||
void append_move_all_values(Container &dest, Container &src) {
|
||||
dest.insert(dest.end(), std::make_move_iterator(src.begin()), std::make_move_iterator(src.end()));
|
||||
src.clear();
|
||||
}
|
||||
|
||||
std::string getPluginPath();
|
||||
|
||||
OSDynLoad_Error CustomDynLoadAlloc(int32_t size, int32_t align, void **outAddr);
|
||||
|
||||
Reference in New Issue
Block a user