MCPcopy Create free account
hub / github.com/DISTRHO/DPF / create_view

Function create_view

distrho/src/DistrhoPluginVST3.cpp:3878–3938  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3876 }
3877
3878 static v3_plugin_view** V3_API create_view(void* self, const char* name)
3879 {
3880 d_debug("dpf_edit_controller::create_view => %p %s", self, name);
3881
3882 #if DISTRHO_PLUGIN_HAS_UI
3883 dpf_edit_controller* const controller = *static_cast<dpf_edit_controller**>(self);
3884
3885 d_debug("create_view has contexts %p %p",
3886 controller->hostApplicationFromFactory, controller->hostApplicationFromInitialize);
3887
3888 // plugin must be initialized
3889 PluginVst3* const vst3 = controller->vst3;
3890 DISTRHO_SAFE_ASSERT_RETURN(vst3 != nullptr, nullptr);
3891
3892 d_debug("dpf_edit_controller::create_view => %p %s | edit-ctrl %p, factory %p",
3893 self, name,
3894 controller->hostApplicationFromInitialize,
3895 controller->hostApplicationFromFactory);
3896
3897 // we require a host application for message creation
3898 v3_host_application** const host = controller->hostApplicationFromInitialize != nullptr
3899 ? controller->hostApplicationFromInitialize
3900 #if !DPF_VST3_USES_SEPARATE_CONTROLLER
3901 : controller->hostApplicationFromComponent != nullptr
3902 ? controller->hostApplicationFromComponent
3903 : controller->hostApplicationFromComponentInitialize != nullptr
3904 ? controller->hostApplicationFromComponentInitialize
3905 #endif
3906 : controller->hostApplicationFromFactory;
3907 DISTRHO_SAFE_ASSERT_RETURN(host != nullptr, nullptr);
3908
3909 v3_plugin_view** const view = dpf_plugin_view_create(host,
3910 vst3->getInstancePointer(),
3911 vst3->getSampleRate());
3912 DISTRHO_SAFE_ASSERT_RETURN(view != nullptr, nullptr);
3913
3914 v3_connection_point** uiconn = nullptr;
3915 if (v3_cpp_obj_query_interface(view, v3_connection_point_iid, &uiconn) == V3_OK)
3916 {
3917 d_debug("view connection query ok %p", uiconn);
3918 controller->connectionCtrl2View = new dpf_ctrl2view_connection_point(controller->vst3);
3919
3920 v3_connection_point** const ctrlconn = (v3_connection_point**)&controller->connectionCtrl2View;
3921
3922 v3_cpp_obj(uiconn)->connect(uiconn, ctrlconn);
3923 v3_cpp_obj(ctrlconn)->connect(ctrlconn, uiconn);
3924 }
3925 else
3926 {
3927 controller->connectionCtrl2View = nullptr;
3928 }
3929
3930 return view;
3931 #else
3932 return nullptr;
3933 #endif
3934
3935 // maybe unused

Callers

nothing calls this directly

Calls 6

d_debugFunction · 0.85
dpf_plugin_view_createFunction · 0.85
v3_cpp_objFunction · 0.50
getSampleRateMethod · 0.45
connectMethod · 0.45

Tested by

no test coverage detected