[beast: 3/13] BSE: move WaveOsc.set_from_editable_sample into bseapi.idl



commit 62a9a4bae0e7bdf7a55ea6b2c8eea4c24e51bb82
Author: Tim Janik <timj gnu org>
Date:   Wed Aug 30 14:53:39 2017 +0200

    BSE: move WaveOsc.set_from_editable_sample into bseapi.idl
    
    Signed-off-by: Tim Janik <timj gnu org>

 bse/bseapi.idl      |    2 +-
 bse/bsewaveosc.cc   |   10 ++++++++++
 bse/bsewaveosc.hh   |    7 ++++---
 bse/bsewaveosc.proc |   23 -----------------------
 4 files changed, 15 insertions(+), 27 deletions(-)
---
diff --git a/bse/bseapi.idl b/bse/bseapi.idl
index b09de0e..6c096ce 100644
--- a/bse/bseapi.idl
+++ b/bse/bseapi.idl
@@ -823,7 +823,7 @@ interface WaveRepo : Super {
 /// Oscillator module for wave files.
 interface WaveOsc : Source {
   void        request_pcm_position     ();                       ///< Request emission of the 
::notify_pcm_position signal.
-  // void        set_from_editable_sample (EditableSample esample); ///< Set wave to play from editable 
sample, bypassing undo and storage mechanisms.
+  void        set_from_editable_sample (EditableSample esample); ///< Set wave to play from editable sample, 
bypassing undo and storage mechanisms.
   // signal void notify_pcm_position      (int64 timestamp, int64 position); ///< Notification signal 
containing the current PCM play position pointer.
   // Wave    wave           = ("Wave", "Wave used as oscillator source", STANDARD);
   // int64   channel        = Range ("Channel", "The audio channel to play, usually 1 is left, 2 is right", 
":readwrite", 1, 256);
diff --git a/bse/bsewaveosc.cc b/bse/bsewaveosc.cc
index 74724f9..d849df8 100644
--- a/bse/bsewaveosc.cc
+++ b/bse/bsewaveosc.cc
@@ -602,4 +602,14 @@ WaveOscImpl::request_pcm_position ()
   bse_wave_osc_request_pcm_position (self);
 }
 
+void
+WaveOscImpl::set_from_editable_sample (EditableSampleIface &esi)
+{
+  BseWaveOsc *self = as<BseWaveOsc*>();
+  EditableSampleIface *es = &esi;
+  BseEditableSample *esample = es ? es->as<BseEditableSample*>() : NULL;
+
+  bse_wave_osc_set_from_esample (self, esample);
+}
+
 } // Bse
diff --git a/bse/bsewaveosc.hh b/bse/bsewaveosc.hh
index 4ac604b..d403cbe 100644
--- a/bse/bsewaveosc.hh
+++ b/bse/bsewaveosc.hh
@@ -51,10 +51,11 @@ namespace Bse {
 
 class WaveOscImpl : public SourceImpl, public virtual WaveOscIface {
 protected:
-  virtual      ~WaveOscImpl             ();
+  virtual      ~WaveOscImpl              ();
 public:
-  explicit      WaveOscImpl             (BseObject*);
-  virtual void  request_pcm_position    () override;
+  explicit      WaveOscImpl              (BseObject*);
+  virtual void  request_pcm_position     () override;
+  virtual void  set_from_editable_sample (EditableSampleIface &esi) override;
 };
 
 } // Bse
diff --git a/bse/bsewaveosc.proc b/bse/bsewaveosc.proc
index c2385bc..3fe5c6f 100644
--- a/bse/bsewaveosc.proc
+++ b/bse/bsewaveosc.proc
@@ -35,26 +35,3 @@ PROCEDURE (bse-wave-osc-mass-seek-perc, "Seek Wave Oscillators") {
 
   return Bse::Error::NONE;
 }
-
-METHOD (BseWaveOsc, set-from-editable-sample) {
-  HELP = "Set wave to play from editable sample, bypassing undo and storage mechanisms.";
-  IN   = bse_param_spec_object ("wosc", NULL, "Wave Oscilator",
-                                BSE_TYPE_WAVE_OSC, SFI_PARAM_STANDARD);
-  IN   = bse_param_spec_object ("esample", NULL, "Editable Sample",
-                                BSE_TYPE_EDITABLE_SAMPLE, SFI_PARAM_STANDARD);
-} BODY (BseProcedureClass *proc,
-       const GValue      *in_values,
-       GValue            *out_values)
-{
-  /* extract parameter values */
-  BseWaveOsc *self = (BseWaveOsc*) bse_value_get_object (in_values++);
-  BseEditableSample *esample = (BseEditableSample*) bse_value_get_object (in_values++);
-
-  /* check parameters */
-  if (!BSE_IS_WAVE_OSC (self))
-    return Bse::Error::PROC_PARAM_INVAL;
-
-  bse_wave_osc_set_from_esample (self, esample);
-
-  return Bse::Error::NONE;
-}


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]