VST 3 Interfaces: IProgress Class Reference
Author: Steinberg

VST 3 Interfaces VST 3.7 SDK for developing VST plug-in

- Main Page
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Macros Groups Pages
Public Types | Public Member Functions | Static Public Attributes | List of all members
IProgress Class Referenceabstract

Extended host callback interface for an edit controller: Vst::IProgress. More...

`#include <ivsteditcontroller.h>`

Inheritance diagram for IProgress:

## Public Types
enum | ProgressType : uint32 { AsyncStateRestoration = 0, UIBackgroundTask }
using | ID = uint64

## Public Member Functions
virtual tresult | start (ProgressType type, const char *optionalDescription, ID &outID)=0
| Start a new progress of a given type and optional Description.
virtual tresult | update (ID id, ParamValue normValue)=0
| Update the progress value (normValue between [0, 1]) associated to the given id.
virtual tresult | finish (ID id)=0
| Finish the progress associated to the given id.
Public Member Functions inherited from FUnknown
virtual tresult | queryInterface (const TUID _iid, void **obj)=0
virtual uint32 | addRef ()=0
virtual uint32 | release ()=0

## Static Public Attributes
static const FUID | iid
Static Public Attributes inherited from FUnknown
static const FUID | iid

## Detailed Description

Extended host callback interface for an edit controller: Vst::IProgress.

- [host imp]
- [extends IComponentHandler]
- [released: 3.7.0]
- [optional]

Allows the plug-in to request the host to create a progress for some specific tasks which take some time. The host can visualize the progress as read-only UI elements. For example, after loading a project where a plug-in needs to load extra data (e.g. samples) in a background thread, this enables the host to get and visualize the current status of the loading progress and to inform the user when the loading is finished. Note: During the progress, the host can unload the plug-in at any time. Make sure that the plug-in supports this use case.

# Example

//--------------------------------------
// we are in the editcontroller:
// as member: IProgress::ID mProgressID;
FUnknownPtr<IProgress> progress (componentHandler);
if (progress)
progress->start (IProgress::ProgressType::UIBackgroundTask, STR ("Load Samples..."), mProgressID);
// ...
myProgressValue += incProgressStep;
FUnknownPtr<IProgress> progress (componentHandler);
if (progress)
progress->update (mProgressID, myProgressValue);
// ...
FUnknownPtr<IProgress> progress (componentHandler);
if (progress)
progress->finish (mProgressID);

See Also
  IComponentHandler

## Member Typedef Documentation

using ID = uint64

## Member Enumeration Documentation

enum ProgressType : uint32

Enumerator
AsyncStateRestoration | plug-in state is restored async (in a background Thread)
UIBackgroundTask | a plug-in task triggered by a UI action

## Member Function Documentation

virtual tresult start | ( | ProgressType | type,
|  | const char * | optionalDescription,
|  | ID & | outID
| ) |  |
| pure virtual

Start a new progress of a given type and optional Description.

outID is as ID created by the host to identify this newly created progress (for update and finish method)

virtual tresult update | ( | ID | id,
|  | ParamValue | normValue
| ) |  |
| pure virtual

Update the progress value (normValue between [0, 1]) associated to the given id.

virtual tresult finish | ( | ID | id | ) |
| pure virtual

Finish the progress associated to the given id.

## Member Data Documentation

const FUID iid
| static

Empty

Copyright ©2023 Steinberg Media Technologies GmbH. All Rights Reserved. This documentation is under this license.