std::unique_ptr<EXTERNAL_ENGINE> engine;
KeyManager::data mountKey;
+bool isBootCompleted = false;
void killDependedApplications()
{
if (value != NULL) {
std::string valueStr(value);
free(value);
- if (valueStr == "encrypted") {
+ if (valueStr == "encrypted" && isBootCompleted) {
try {
INFO(SINK, "Launch SD card password popup");
AppBundle bundle;
}
}
+void bootCompletionCallback(dbus::Variant parameters)
+{
+
+ auto waitForHomescreen = []() {
+ //For a delay until homescreen is totally loaded
+ sleep(8);
+
+ INFO(SINK, "Boot completed");
+
+ char *value = ::vconf_get_str(EXTERNAL_STATE_VCONF_KEY);
+ if (value != NULL) {
+ std::string valueStr(value);
+ free(value);
+ if (valueStr == "encrypted") {
+ try {
+ INFO(SINK, "Launch SD card password popup");
+ AppBundle bundle;
+ bundle.add("viewtype", "SD_CARD_PASSWORD");
+ Launchpad launchpad(::tzplatform_getuid(TZ_SYS_DEFAULT_USER));
+ launchpad.launch("org.tizen.ode", bundle);
+ } catch (runtime::Exception &e) {
+ ERROR(SINK, "Failed to launch SD card password popup");
+ }
+ }
+ }
+ isBootCompleted = true;
+ };
+
+ std::thread asyncWork(waitForHomescreen);
+ asyncWork.detach();
+}
+
void externalAddEventReceiver()
{
dbus::Connection &systemDBus = dbus::Connection::getSystem();
"org.tizen.system.storage.BlockManager",
"DeviceChanged",
externalCallback);
+
+ systemDBus.subscribeSignal("",
+ "/Org/Tizen/System/Pass/Core",
+ "org.tizen.system.pass.core",
+ "BootingDone",
+ bootCompletionCallback);
}
unsigned int getOptions()