sonar | Replace global static variables within jni/sonar.cpp with local static.

Summary: Replacing global static varaibles with local static. No cost at startup time, and also fixes any potential static initialization order fiasco.

Differential Revision: D45900844

fbshipit-source-id: 4ff05cbefe2f0c00199f40b9127e28c355d1819e
This commit is contained in:
Nikita Lutsenko
2023-05-16 18:56:17 -07:00
committed by Facebook GitHub Bot
parent 0069155b1e
commit b66bff3837

View File

@@ -44,8 +44,15 @@ void handleException(const std::exception& e) {
__android_log_write(ANDROID_LOG_ERROR, "FLIPPER", message.c_str()); __android_log_write(ANDROID_LOG_ERROR, "FLIPPER", message.c_str());
} }
std::unique_ptr<facebook::flipper::Scheduler> sonarScheduler; std::unique_ptr<facebook::flipper::Scheduler>& sonarScheduler() {
std::unique_ptr<facebook::flipper::Scheduler> connectionScheduler; static std::unique_ptr<facebook::flipper::Scheduler> scheduler;
return scheduler;
}
std::unique_ptr<facebook::flipper::Scheduler>& connectionScheduler() {
static std::unique_ptr<facebook::flipper::Scheduler> scheduler;
return scheduler;
}
class JEventBase : public jni::HybridClass<JEventBase> { class JEventBase : public jni::HybridClass<JEventBase> {
public: public:
@@ -943,9 +950,9 @@ class JFlipperClient : public jni::HybridClass<JFlipperClient> {
const std::string app, const std::string app,
const std::string appId, const std::string appId,
const std::string privateAppDirectory) { const std::string privateAppDirectory) {
sonarScheduler = sonarScheduler() =
std::make_unique<FollyScheduler>(callbackWorker->eventBase()); std::make_unique<FollyScheduler>(callbackWorker->eventBase());
connectionScheduler = connectionScheduler() =
std::make_unique<FollyScheduler>(connectionWorker->eventBase()); std::make_unique<FollyScheduler>(connectionWorker->eventBase());
FlipperClient::init( FlipperClient::init(
@@ -956,8 +963,8 @@ class JFlipperClient : public jni::HybridClass<JFlipperClient> {
std::move(app), std::move(app),
std::move(appId), std::move(appId),
std::move(privateAppDirectory)}, std::move(privateAppDirectory)},
sonarScheduler.get(), sonarScheduler().get(),
connectionScheduler.get(), connectionScheduler().get(),
insecurePort, insecurePort,
securePort, securePort,
altInsecurePort, altInsecurePort,