26JUCEApplicationBase::CreateInstanceFunction JUCEApplicationBase::createInstance =
nullptr;
27JUCEApplicationBase* JUCEApplicationBase::appInstance =
nullptr;
30void* JUCEApplicationBase::iOSCustomDelegate =
nullptr;
56 const std::unique_ptr<JUCEApplicationBase> app (
appInstance);
73 const char*
const sourceFile,
84 app->unhandledException (
e, sourceFile, lineNumber);
89#if ! (JUCE_IOS || JUCE_ANDROID)
90 #define JUCE_HANDLE_MULTIPLE_INSTANCES 1
93#if JUCE_HANDLE_MULTIPLE_INSTANCES
97 :
appLock (
"juceAppLock_" + appName)
120 auto appName = app->getApplicationName();
122 if (
message.startsWith (appName +
"/"))
123 app->anotherInstanceStarted (
message.substring (appName.length() + 1));
148StringArray JUCEApplicationBase::getCommandLineParameterArray() {
return {}; }
149String JUCEApplicationBase::getCommandLineParameters() {
return {}; }
153#if JUCE_WINDOWS && ! defined (_CONSOLE)
155String
JUCE_CALLTYPE JUCEApplicationBase::getCommandLineParameters()
157 return CharacterFunctions::findEndOfToken (CharPointer_UTF16 (GetCommandLineW()),
158 CharPointer_UTF16 (L
" "),
159 CharPointer_UTF16 (L
"\"")).findEndOfWhitespace();
162StringArray
JUCE_CALLTYPE JUCEApplicationBase::getCommandLineParameterArray()
167 if (
auto argv = CommandLineToArgvW (GetCommandLineW(), &
argc))
178#if JUCE_IOS && JUCE_MODULE_AVAILABLE_juce_gui_basics
179 extern int juce_iOSMain (
int argc,
const char*
argv[],
void* classPtr);
183 extern void initialiseNSApplication();
186#if (JUCE_LINUX || JUCE_BSD) && JUCE_MODULE_AVAILABLE_juce_gui_extra && (! defined(JUCE_WEB_BROWSER) || JUCE_WEB_BROWSER)
206 if (
arg.containsChar (
' ') && !
arg.isQuotedString())
209 argString <<
arg <<
' ';
212 return argString.
trim();
228 initialiseNSApplication();
231 #if (JUCE_LINUX || JUCE_BSD) && JUCE_MODULE_AVAILABLE_juce_gui_extra && (! defined(JUCE_WEB_BROWSER) || JUCE_WEB_BROWSER)
232 if (
argc >= 2 &&
String (
argv[1]) ==
"--juce-gtkwebkitfork-child")
236 #if JUCE_IOS && JUCE_MODULE_AVAILABLE_juce_gui_basics
237 return juce_iOSMain (
argc,
argv, iOSCustomDelegate);
253 const std::unique_ptr<JUCEApplicationBase> app (
createInstance());
256 if (! app->initialiseApp())
257 return app->shutdownApp();
266 return app->shutdownApp();
274 #if JUCE_HANDLE_MULTIPLE_INSTANCES
277 DBG (
"Another instance is running - quitting...");
282 #if JUCE_WINDOWS && JUCE_STANDALONE_APPLICATION && (! defined (_CONSOLE)) && (! JUCE_MINGW)
283 if (AttachConsole (ATTACH_PARENT_PROCESS) != 0)
290 if (_fileno(stdout) < 0) freopen_s (&
ignore,
"CONOUT$",
"w", stdout);
291 if (_fileno(stderr) < 0) freopen_s (&
ignore,
"CONOUT$",
"w", stderr);
292 if (_fileno(stdin) < 0) freopen_s (&
ignore,
"CONIN$",
"r", stdin);
304 #if JUCE_HANDLE_MULTIPLE_INSTANCES
316 #if JUCE_HANDLE_MULTIPLE_INSTANCES
static void shutdown(void)
Definition adplugdb.cpp:297
static void message(int level, const char *fmt,...)
Definition adplugdb.cpp:120
Definition StringArray.h:41
Definition juce_ActionListener.h:35
Definition juce_CharPointer_UTF8.h:35
static void deleteAll()
Definition juce_DeletedAtShutdown.cpp:50
static bool isAbsolutePath(StringRef path)
Definition juce_File.cpp:400
Definition juce_InterProcessLock.h:35
static JUCEApplicationBase * appInstance
Definition juce_ApplicationBase.h:300
virtual ~JUCEApplicationBase()
Definition juce_ApplicationBase.cpp:39
virtual void initialise(const String &commandLineParameters)=0
virtual const String getApplicationName()=0
static CreateInstanceFunction createInstance
Definition juce_ApplicationBase.h:286
static void appWillTerminateByForce()
Definition juce_ApplicationBase.cpp:51
virtual bool initialiseApp()
Definition juce_ApplicationBase.cpp:272
static String JUCE_CALLTYPE getCommandLineParameters()
Definition juce_ApplicationBase.cpp:198
int shutdownApp()
Definition juce_ApplicationBase.cpp:312
static int main()
Definition juce_ApplicationBase.cpp:248
std::unique_ptr< MultipleInstanceHandler > multipleInstanceHandler
Definition juce_ApplicationBase.h:305
bool stillInitialising
Definition juce_ApplicationBase.h:302
static void quit()
Definition juce_ApplicationBase.cpp:67
JUCEApplicationBase()
Definition juce_ApplicationBase.cpp:33
static StringArray JUCE_CALLTYPE getCommandLineParameterArray()
Definition juce_ApplicationBase.cpp:215
void setApplicationReturnValue(int newReturnValue) noexcept
Definition juce_ApplicationBase.cpp:45
bool sendCommandLineToPreexistingInstance()
Definition juce_ApplicationBase.cpp:133
static void JUCE_CALLTYPE sendUnhandledException(const std::exception *, const char *sourceFile, int lineNumber)
Definition juce_ApplicationBase.cpp:72
static JUCEApplicationBase * getInstance() noexcept
Definition juce_ApplicationBase.h:96
static bool isStandaloneApp() noexcept
Definition juce_ApplicationBase.h:267
virtual bool moreThanOneInstanceAllowed()=0
int appReturnValue
Definition juce_ApplicationBase.h:301
int getApplicationReturnValue() const noexcept
Definition juce_ApplicationBase.h:262
static void broadcastMessage(const String &messageText)
Definition juce_linux_Messaging.cpp:327
static void deleteInstance()
Definition juce_MessageManager.cpp:63
static MessageManager * getInstance()
Definition juce_MessageManager.cpp:47
Definition juce_Initialisation.h:70
Definition juce_StringArray.h:35
Definition juce_String.h:53
String trim() const
Definition juce_String.cpp:1656
* e
Definition inflate.c:1404
register unsigned i
Definition inflate.c:1575
unsigned s
Definition inflate.c:1555
char * argv[]
Definition unzip.c:738
static bool ignore
Definition pugl.h:1696
#define JUCE_TRY
Definition juce_ApplicationBase.h:329
#define JUCE_CATCH_EXCEPTION
Definition juce_ApplicationBase.h:330
#define JUCE_AUTORELEASEPOOL
Definition juce_Memory.h:158
Definition carla_juce.cpp:31
jack_client_t client jack_client_t client jack_client_t client jack_client_t JackInfoShutdownCallback void * arg
Definition juce_linux_JackAudio.cpp:63
int juce_argc
Definition juce_linux_Files.cpp:105
int juce_gtkWebkitMain(int argc, const char *argv[])
Definition juce_linux_X11_WebBrowserComponent.cpp:1013
const char *const * juce_argv
Definition juce_linux_Files.cpp:104
Definition juce_ApplicationBase.cpp:95
void actionListenerCallback(const String &message) override
Definition juce_ApplicationBase.cpp:116
MultipleInstanceHandler(const String &appName)
Definition juce_ApplicationBase.cpp:96
InterProcessLock appLock
Definition juce_ApplicationBase.cpp:128
bool sendCommandLineToPreexistingInstance()
Definition juce_ApplicationBase.cpp:101
int argc
Definition zipinfo.c:455