63 lines
2.1 KiB
C++
63 lines
2.1 KiB
C++
//-----------------------------------------------------------------------------
|
|
// Project : SDK Core
|
|
// Version : 1.0
|
|
//
|
|
// Category : Common Base Classes
|
|
// Filename : public.sdk/source/main/linuxmain.cpp
|
|
// Created by : Steinberg, 03/2017
|
|
// Description : Linux Component Entry
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
// This file is part of a Steinberg SDK. It is subject to the license terms
|
|
// in the LICENSE file found in the top-level directory of this distribution
|
|
// and at www.steinberg.net/sdklicenses.
|
|
// No part of the SDK, including this file, may be copied, modified, propagated,
|
|
// or distributed except according to the terms contained in the LICENSE file.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#include "pluginterfaces/base/fplatform.h"
|
|
|
|
void* moduleHandle = nullptr;
|
|
|
|
//------------------------------------------------------------------------
|
|
bool InitModule (); ///< must be provided by plug-in: called when the library is loaded
|
|
bool DeinitModule (); ///< must be provided by plug-in: called when the library is unloaded
|
|
|
|
//------------------------------------------------------------------------
|
|
extern "C"
|
|
{
|
|
/** must be provided by the plug-in! */
|
|
SMTG_EXPORT_SYMBOL bool ModuleEntry (void*);
|
|
SMTG_EXPORT_SYMBOL bool ModuleExit (void);
|
|
}
|
|
|
|
static int moduleCounter {0}; // counting for ModuleEntry/ModuleExit pairs
|
|
|
|
//------------------------------------------------------------------------
|
|
/** must be called from host right after loading dll
|
|
Note: this could be called more than one time! */
|
|
bool ModuleEntry (void* sharedLibraryHandle)
|
|
{
|
|
if (++moduleCounter == 1)
|
|
{
|
|
moduleHandle = sharedLibraryHandle;
|
|
return InitModule ();
|
|
}
|
|
return true;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
/** must be called from host right before unloading dll
|
|
Note: this could be called more than one time! */
|
|
bool ModuleExit (void)
|
|
{
|
|
if (--moduleCounter == 0)
|
|
{
|
|
moduleHandle = nullptr;
|
|
return DeinitModule ();
|
|
}
|
|
else if (moduleCounter < 0)
|
|
return false;
|
|
return true;
|
|
}
|