88 lines
3.4 KiB
C++
88 lines
3.4 KiB
C++
//------------------------------------------------------------------------
|
|
// Project : VST SDK
|
|
//
|
|
// Category : Interfaces
|
|
// Filename : pluginterfaces/vst/ivstprefetchablesupport.h
|
|
// Created by : Steinberg, 02/2015
|
|
// Description : VST Prefetchable Support Interface
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
// 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.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
#include "pluginterfaces/vst/vsttypes.h"
|
|
#include "pluginterfaces/vst/ivstattributes.h"
|
|
|
|
//------------------------------------------------------------------------
|
|
#include "pluginterfaces/base/falignpush.h"
|
|
//------------------------------------------------------------------------
|
|
|
|
//------------------------------------------------------------------------
|
|
namespace Steinberg {
|
|
namespace Vst {
|
|
|
|
typedef uint32 PrefetchableSupport;
|
|
enum ePrefetchableSupport
|
|
{
|
|
kIsNeverPrefetchable = 0, ///< every instance of the plug does not support prefetch processing
|
|
kIsYetPrefetchable, ///< in the current state the plug support prefetch processing
|
|
kIsNotYetPrefetchable, ///< in the current state the plug does not support prefetch processing
|
|
kNumPrefetchableSupport
|
|
};
|
|
|
|
//------------------------------------------------------------------------
|
|
// IPrefetchableSupport Interface
|
|
//------------------------------------------------------------------------
|
|
/** Indicates that the Plug-in could or not support Prefetch (dynamically).
|
|
\ingroup vstIPlug vst365
|
|
- [plug imp]
|
|
- [extends IComponent]
|
|
- [released: 3.6.5]
|
|
- [optional]
|
|
|
|
The Plug-in should implement this interface if it needs to dynamically change between Prefetchable or not.
|
|
By default (without implementing this interface) the host will decide in which mode the Plug-in will be process.
|
|
For more info about Prefetch processing mode check ProcessModes::kPrefetch documentation.
|
|
|
|
\section IPrefetchableSupportExample Example
|
|
\code
|
|
tresult PLUGIN_API myPlug::getPrefetchableSupport (PrefetchableSupport& prefetchable)
|
|
{
|
|
prefetchable = kIsNeverPrefetchable;
|
|
|
|
switch (myPrefetchableMode)
|
|
{
|
|
case 0: prefetchable = kIsNeverPrefetchable; break;
|
|
case 1: prefetchable = kIsYetPrefetchable; break;
|
|
case 2: prefetchable = kIsNotYetPrefetchable; break;
|
|
}
|
|
return kResultOk;
|
|
}
|
|
\endcode */
|
|
class IPrefetchableSupport : public FUnknown
|
|
{
|
|
public:
|
|
//------------------------------------------------------------------------
|
|
/** retrieve the current prefetch support. Use IComponentHandler::restartComponent (kPrefetchableSupportChanged)
|
|
to inform the host that this support has changed. */
|
|
virtual tresult PLUGIN_API getPrefetchableSupport (PrefetchableSupport& prefetchable /*out*/) = 0;
|
|
|
|
//------------------------------------------------------------------------
|
|
static const FUID iid;
|
|
};
|
|
|
|
DECLARE_CLASS_IID (IPrefetchableSupport, 0x8AE54FDA, 0xE93046B9, 0xA28555BC, 0xDC98E21E)
|
|
|
|
} // namespace Vst
|
|
} // namespace Steinberg
|
|
|
|
//------------------------------------------------------------------------
|
|
#include "pluginterfaces/base/falignpop.h"
|
|
//------------------------------------------------------------------------
|