| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -167,10 +167,15 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            disconnect(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    void postInit(const uint32_t nextWidth, const uint32_t nextHeight) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    void postInit(uint32_t nextWidth, uint32_t nextHeight) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (fIsResizingFromHost && nextWidth > 0 && nextHeight > 0) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#ifdef DISTRHO_OS_MAC | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            const double scaleFactor = fUI.getScaleFactor(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            nextWidth *= scaleFactor; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            nextHeight *= scaleFactor; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (fUI.getWidth() != nextWidth || fUI.getHeight() != nextHeight) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                d_stdout("postInit sets new size as %u %u", nextWidth, nextHeight); | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -278,18 +283,27 @@ public: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return V3_OK; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    v3_result onSize(v3_view_rect* const rect) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    v3_result onSize(v3_view_rect* const orect) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        v3_view_rect rect = *orect; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#ifdef DISTRHO_OS_MAC | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        const double scaleFactor = fUI.getScaleFactor(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        rect.top *= scaleFactor; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        rect.left *= scaleFactor; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        rect.right *= scaleFactor; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        rect.bottom *= scaleFactor; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (fIsResizingFromPlugin) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            d_stdout("host->plugin onSize request %i %i (IGNORED, plugin resize active)", | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                     rect->right - rect->left, rect->bottom - rect->top); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                     rect.right - rect.left, rect.bottom - rect.top); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return V3_OK; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        d_stdout("host->plugin onSize request %i %i (OK)", rect->right - rect->left, rect->bottom - rect->top); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        d_stdout("host->plugin onSize request %i %i (OK)", rect.right - rect.left, rect.bottom - rect.top); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        fIsResizingFromHost = true; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        fUI.setWindowSizeForVST3(rect->right - rect->left, rect->bottom - rect->top); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        fUI.setWindowSizeForVST3(rect.right - rect.left, rect.bottom - rect.top); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return V3_OK; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -623,6 +637,12 @@ private: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        DISTRHO_SAFE_ASSERT_RETURN(fView != nullptr,); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        DISTRHO_SAFE_ASSERT_RETURN(fFrame != nullptr,); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#ifdef DISTRHO_OS_MAC | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        const double scaleFactor = fUI.getScaleFactor(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        width /= scaleFactor; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        height /= scaleFactor; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (fIsResizingFromHost) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            d_stdout("plugin->host setSize %u %u (IGNORED, host resize active)", width, height); | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -631,12 +651,6 @@ private: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        d_stdout("plugin->host setSize %u %u (OK)", width, height); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#ifdef DISTRHO_OS_MAC | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        const double scaleFactor = fUI.getScaleFactor(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        width /= scaleFactor; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        height /= scaleFactor; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        fIsResizingFromPlugin = true; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        v3_view_rect rect; | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -1049,6 +1063,7 @@ struct dpf_plugin_view : v3_plugin_view_cpp { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return V3_OK; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#ifndef DISTRHO_OS_MAC | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (v3_tuid_match(v3_plugin_view_content_scale_iid, iid)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            d_stdout("query_interface_view => %p %s %p | OK convert %p", | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -1061,6 +1076,7 @@ struct dpf_plugin_view : v3_plugin_view_cpp { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            *iface = &view->scale; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return V3_OK; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        d_stdout("query_interface_view => %p %s %p | WARNING UNSUPPORTED", self, tuid2str(iid), iface); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -1108,6 +1124,7 @@ struct dpf_plugin_view : v3_plugin_view_cpp { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#ifndef DISTRHO_OS_MAC | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (dpf_plugin_view_content_scale* const scale = view->scale) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (const int refcount = scale->refcounter) | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -1116,6 +1133,7 @@ struct dpf_plugin_view : v3_plugin_view_cpp { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                d_stderr("DPF warning: asked to delete view while content scale still active (refcount %d)", refcount); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (unclean) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return 0; | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -1164,13 +1182,13 @@ struct dpf_plugin_view : v3_plugin_view_cpp { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                view->runloop = runloop; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			               #endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                const float scaleFactor = view->scale != nullptr ? view->scale->scaleFactor : 0.0f; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                const float lastScaleFactor = view->scale != nullptr ? view->scale->scaleFactor : 0.0f; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                view->uivst3 = new UIVst3((v3_plugin_view**)self, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                          view->hostApplication, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                          view->connection != nullptr ? view->connection->other : nullptr, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                          view->frame, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                          (uintptr_t)parent, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                          scaleFactor, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                          lastScaleFactor, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                          view->sampleRate, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                          view->instancePointer, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                          view->nextWidth > 0 && view->nextHeight > 0); | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -1287,13 +1305,21 @@ struct dpf_plugin_view : v3_plugin_view_cpp { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (UIVst3* const uivst3 = view->uivst3) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return uivst3->getSize(rect); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        const float scaleFactor = view->scale != nullptr ? view->scale->scaleFactor : 0.0f; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        const float lastScaleFactor = view->scale != nullptr ? view->scale->scaleFactor : 0.0f; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        UIExporter tmpUI(nullptr, 0, view->sampleRate, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                         nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                         view->instancePointer, scaleFactor); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                         view->instancePointer, lastScaleFactor); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        rect->left = rect->top = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        rect->right = view->nextWidth = tmpUI.getWidth(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        rect->bottom = view->nextHeight = tmpUI.getHeight(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        view->nextWidth = tmpUI.getWidth(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        view->nextHeight = tmpUI.getHeight(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#ifdef DISTRHO_OS_MAC | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        const double scaleFactor = tmpUI.getScaleFactor(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        view->nextWidth /= scaleFactor; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        view->nextHeight /= scaleFactor; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#endif | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        rect->right = view->nextWidth; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        rect->bottom = view->nextHeight; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        tmpUI.quit(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return V3_OK; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -1365,13 +1391,14 @@ struct dpf_plugin_view : v3_plugin_view_cpp { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (UIVst3* const uivst3 = view->uivst3) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return uivst3->checkSizeConstraint(rect); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        const float scaleFactor = view->scale != nullptr ? view->scale->scaleFactor : 0.0f; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        const float lastScaleFactor = view->scale != nullptr ? view->scale->scaleFactor : 0.0f; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        UIExporter tmpUI(nullptr, 0, view->sampleRate, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                         nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                         view->instancePointer, scaleFactor); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                         view->instancePointer, lastScaleFactor); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        uint minimumWidth, minimumHeight; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        bool keepAspectRatio; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        tmpUI.getGeometryConstraints(minimumWidth, minimumHeight, keepAspectRatio); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        tmpUI.quit(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        applyGeometryConstraints(minimumWidth, minimumHeight, keepAspectRatio, rect); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return V3_TRUE; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |