add last backwards-compatible version

This commit is contained in:
2021-12-14 00:33:46 -07:00
parent 68b10d413b
commit b0dd3f07f3
335 changed files with 4746 additions and 19627 deletions

View File

@@ -24,12 +24,23 @@ t_size service_factory_base::enum_get_count(service_class_ref p_class)
service_factory_base * service_factory_base::__internal__list = NULL;
namespace {
class main_thread_callback_release_object : public main_thread_callback {
public:
main_thread_callback_release_object(service_ptr obj) : m_object(obj) {}
void callback_run() {
try { m_object.release(); } catch(...) {}
}
private:
service_ptr m_object;
};
}
namespace service_impl_helper {
void release_object_delayed(service_base * ptr) {
ptr->service_add_ref();
fb2k::inMainThread( [ptr] {
try { ptr->service_release(); } catch(...) {}
} );
void release_object_delayed(service_ptr obj) {
main_thread_callback_manager::get()->add_callback(new service_impl_t<main_thread_callback_release_object>(obj));
}
};
@@ -38,11 +49,6 @@ void _standard_api_create_internal(service_ptr & out, const GUID & classID) {
service_class_ref c = service_factory_base::enum_find_class(classID);
switch(service_factory_base::enum_get_count(c)) {
case 0:
#if PFC_DEBUG
if ( core_api::are_services_available() ) {
FB2K_DebugLog() << "Service not found of type: " << pfc::print_guid(classID);
}
#endif
throw exception_service_not_found();
case 1:
PFC_ASSERT_SUCCESS( service_factory_base::enum_create(out, c, 0) );