modules/jdk.packager/src/main/native/library/common/Package.cpp
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2014, 2016, Oracle and/or its affiliates.
* All rights reserved. Use is subject to license terms.
*
* This file is available and licensed under the following license:
*
* Redistribution and use in source and binary forms, with or without
--- 1,7 ----
/*
! * Copyright (c) 2014, 2017, Oracle and/or its affiliates.
* All rights reserved. Use is subject to license terms.
*
* This file is available and licensed under the following license:
*
* Redistribution and use in source and binary forms, with or without
*** 55,64 ****
--- 55,91 ----
}
return result;
}
+ bool Package::CheckForSingleInstance() {
+ Platform& platform = Platform::GetInstance();
+ #ifdef MAC
+ if (platform.IsMainThread()) {
+ return false;
+ }
+ #endif
+ if (FInitialized == true) {
+ // everything must be initialised at this point
+ return false;
+ }
+ TString appName;
+ TString appVersion;
+ AutoFreePtr<ISectionalPropertyContainer> config = platform.GetConfigFile(platform.GetConfigFileName());
+ std::map<TString, TString> keys = platform.GetKeys();
+ config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[APP_NAME_KEY], appName);
+ config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_VERSION], appVersion);
+ TString singleInstance;
+ config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_APPLICATION_INSTANCE], singleInstance);
+ if (singleInstance == _T("single")) {
+ TString uniqueID = appName + FBootFields->FAppID + appVersion;
+ // if another instance is running, later we can try to reactivate it
+ return platform.CheckForSingleInstance(uniqueID);
+ }
+ return false;
+ }
+
void Package::Initialize() {
if (FInitialized == true) {
return;
}