splash updating on gdk/quartz; more filtering of automatable AU parameters
authorPaul Davis <paul@linuxaudiosystems.com>
Wed, 13 Feb 2008 19:41:34 +0000 (19:41 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Wed, 13 Feb 2008 19:41:34 +0000 (19:41 +0000)
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3051 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/splash.cc
libs/ardour/ardour/audio_unit.h
libs/ardour/audio_unit.cc

index 93afb0a010b5f27b7fdbb073303459ae2a8bad9b..1cf15cdef7e4d45a22b303673ede040f0505efd0 100644 (file)
@@ -118,8 +118,9 @@ Splash::message (const string& msg)
        layout->set_markup (str);
        darea.queue_draw ();
        
-       Glib::RefPtr<Gdk::Window> win = get_window();
+       Glib::RefPtr<Gdk::Window> win = darea.get_window();
        if (win) {
                win->process_updates (true);
+               gdk_flush ();
        }
 }
index b63aa5ce851ee9d56984d2809a2073fd5988c7ea..c3b99bd1a909fed66b1c309b86ca7c3ea9a986e2 100644 (file)
@@ -53,6 +53,7 @@ struct AUParameterDescriptor : public Plugin::ParameterDescriptor {
        AudioUnitElement element;
        float default_value;
        bool automatable;
+       AudioUnitParameterUnit unit;
 };
 
 class AUPlugin : public ARDOUR::Plugin
index 6640740ad6a8ce45d389d7ae6b4d52a9db938d21..5e0114c49d708e1fd6c90b169d16a76a883eb6e8 100644 (file)
@@ -155,6 +155,15 @@ AUPlugin::discover_parameters ()
                        const CAAUParameter* param = param_info.GetParamInfo (d.id);
                        const AudioUnitParameterInfo& info (param->ParamInfo());
 
+                       const int len = CFStringGetLength (param->GetName());;
+                       char local_buffer[len*2];
+                       Boolean good = CFStringGetCString(param->GetName(),local_buffer,len*2,kCFStringEncodingMacRoman);
+                       if (!good) {
+                               d.label = "???";
+                       } else {
+                               d.label = local_buffer;
+                       }
+
                        d.scope = param_info.GetScope ();
                        d.element = param_info.GetElement ();
 
@@ -210,18 +219,12 @@ AUPlugin::discover_parameters ()
                        d.integer_step = (info.unit & kAudioUnitParameterUnit_Indexed);
                        d.toggled = (info.unit & kAudioUnitParameterUnit_Boolean);
                        d.sr_dependent = (info.unit & kAudioUnitParameterUnit_SampleFrames);
-
-                       d.automatable = !(info.flags & kAudioUnitParameterFlag_NonRealTime);
+                       d.automatable = !d.toggled && 
+                               !(info.flags & kAudioUnitParameterFlag_NonRealTime) &&
+                               (info.flags & kAudioUnitParameterFlag_IsWritable);
+                       
                        d.logarithmic = (info.flags & kAudioUnitParameterFlag_DisplayLogarithmic);
-
-                       const int len = CFStringGetLength (param->GetName());;
-                       char local_buffer[len*2];
-                       Boolean good = CFStringGetCString(param->GetName(),local_buffer,len*2,kCFStringEncodingMacRoman);
-                       if (!good) {
-                               d.label = "???";
-                       } else {
-                               d.label = local_buffer;
-                       }
+                       d.unit = info.unit;
 
                        d.lower = info.minValue;
                        d.upper = info.maxValue;