add initial support for vari-fill
[ardour.git] / libs / ardour / ardour / diskstream.h
index 0e82459981d51e255b8ce3c1da361db1df8fca6c..a298e3f2c8d5380e2493627ac89ded464adcd6a3 100644 (file)
@@ -171,8 +171,15 @@ class LIBARDOUR_API Diskstream : public SessionObject, public PublicDiskstream
        void move_processor_automation (boost::weak_ptr<Processor>,
                        std::list<Evoral::RangeMove<framepos_t> > const &);
 
-       /** For non-butler contexts (allocates temporary working buffers) */
-       virtual int do_refill_with_alloc() = 0;
+       /** For non-butler contexts (allocates temporary working buffers)
+        *
+        * This accessible method has a default argument; derived classes
+        * must inherit the virtual method that we call which does NOT
+        * have a default argument, to avoid complications with inheritance
+        */
+       int do_refill_with_alloc(bool partial_fill = true) {
+               return _do_refill_with_alloc (partial_fill);
+       }
        virtual void set_block_size (pframes_t) = 0;
 
        bool pending_overwrite () const {
@@ -205,6 +212,11 @@ class LIBARDOUR_API Diskstream : public SessionObject, public PublicDiskstream
        virtual int  can_internal_playback_seek (framecnt_t distance) = 0;
        virtual void reset_write_sources (bool, bool force = false) = 0;
        virtual void non_realtime_input_change () = 0;
+       /* accessible method has default argument, so use standard C++ "trick"
+          to avoid complications with inheritance, by adding this virtual
+          method which does NOT have a default argument.
+       */
+       virtual int _do_refill_with_alloc (bool partial_fill) = 0;
 
   protected:
        friend class Auditioner;