mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-06 21:55:43 +01:00
change ownership of processor window-proxy
fixes crashes: * If the Editor-Mixer shows a channel with a plugin that has been edited in the Mixer, double-clicking the plugin will try to bring up a 2nd instance of the plugin-UI. * When closing Ardour both the Mixer and the Editor-Mixer try to delete the underlying plugin, resulting in a double free.
This commit is contained in:
parent
784b96e255
commit
58663db374
4 changed files with 30 additions and 119 deletions
|
|
@ -35,6 +35,7 @@
|
|||
#include "ardour/automatable.h"
|
||||
|
||||
class XMLNode;
|
||||
class ProcessorWindowProxy;
|
||||
|
||||
namespace ARDOUR {
|
||||
|
||||
|
|
@ -114,6 +115,9 @@ class LIBARDOUR_API Processor : public SessionObject, public Automatable, public
|
|||
void set_ui (void*);
|
||||
void* get_ui () const { return _ui_pointer; }
|
||||
|
||||
ProcessorWindowProxy * window_proxy () const { return _window_proxy; }
|
||||
void set_window_proxy (ProcessorWindowProxy* wp);
|
||||
|
||||
void set_owner (SessionObject*);
|
||||
SessionObject* owner() const;
|
||||
|
||||
|
|
@ -129,6 +133,7 @@ protected:
|
|||
bool _display_to_user;
|
||||
bool _pre_fader; ///< true if this processor is currently placed before the Amp, otherwise false
|
||||
void* _ui_pointer;
|
||||
ProcessorWindowProxy *_window_proxy;
|
||||
SessionObject* _owner;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ Processor::Processor(Session& session, const string& name)
|
|||
, _display_to_user (true)
|
||||
, _pre_fader (false)
|
||||
, _ui_pointer (0)
|
||||
, _window_proxy (0)
|
||||
, _owner (0)
|
||||
{
|
||||
}
|
||||
|
|
@ -79,6 +80,8 @@ Processor::Processor (const Processor& other)
|
|||
, _display_to_user (true)
|
||||
, _pre_fader (false)
|
||||
, _ui_pointer (0)
|
||||
, _window_proxy (0)
|
||||
, _owner (0)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -271,6 +274,12 @@ Processor::set_ui (void* p)
|
|||
_ui_pointer = p;
|
||||
}
|
||||
|
||||
void
|
||||
Processor::set_window_proxy (ProcessorWindowProxy* wp)
|
||||
{
|
||||
_window_proxy = wp;
|
||||
}
|
||||
|
||||
void
|
||||
Processor::set_owner (SessionObject* o)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue