diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index f87fe9cbf298b75287a1487d96c2eee9c618ca53..d2aada062284a2770f45661a84ef66c23e476ee9 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -2235,8 +2235,7 @@ static void linphone_core_init(LinphoneCore * lc, LinphoneCoreCbs *cbs, LpConfig // We need the Sal on the Android platform helper init msplugins_dir = linphone_factory_get_msplugins_dir(lfactory); image_resources_dir = linphone_factory_get_image_resources_dir(lfactory); - lc->factory = ms_factory_new_with_voip_and_directories(msplugins_dir, image_resources_dir); - lc->sal=new Sal(lc->factory); + lc->sal=new Sal(NULL); lc->sal->set_http_proxy_host(linphone_core_get_http_proxy_host(lc)); lc->sal->set_http_proxy_port(linphone_core_get_http_proxy_port(lc)); @@ -2250,6 +2249,10 @@ static void linphone_core_init(LinphoneCore * lc, LinphoneCoreCbs *cbs, LpConfig if (lc->platform_helper == NULL) lc->platform_helper = new LinphonePrivate::StubbedPlatformHelpers(lc); + // MS Factory MUST be created after Android has been set, otherwise no camera will be detected ! + lc->factory = ms_factory_new_with_voip_and_directories(msplugins_dir, image_resources_dir); + lc->sal->set_factory(lc->factory); + belr::GrammarLoader::get().addPath(getPlatformHelpers(lc)->getDataPath()); linphone_task_list_init(&lc->hooks); diff --git a/src/sal/sal.h b/src/sal/sal.h index 9d41b04b7e61ee5a3d852c158dea5a0085a0e081..bf9322d4842235f335ba56a405af286cfed2e2e9 100644 --- a/src/sal/sal.h +++ b/src/sal/sal.h @@ -114,6 +114,10 @@ public: Sal(MSFactory *factory); ~Sal(); + void set_factory(MSFactory *factory) { + this->factory = factory; + } + void set_user_pointer(void *user_data) {this->up=user_data;} void *get_user_pointer() const {return this->up;}