Ardour
9.0-pre0-582-g084a23a80d
rt_safe_delete.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2022 Robin Gareus <robin@gareus.org>
3
*
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation; either version 2 of the License, or
7
* (at your option) any later version.
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License along
15
* with this program; if not, write to the Free Software Foundation, Inc.,
16
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
*/
18
19
#pragma once
20
21
#include "
ardour/audioengine.h
"
22
#include "
ardour/butler.h
"
23
#include "
ardour/session.h
"
24
25
namespace
ARDOUR
{
26
27
template
<
class
C>
28
void
rt_safe_delete
(
ARDOUR::Session
* s, C* gc) {
29
if
(s->
deletion_in_progress
() || !s->
engine
().
in_process_thread
()) {
30
delete
gc;
31
return
;
32
}
33
if
(!s->
butler
()->
delegate
(sigc::bind ([] (C* p) { delete p; }, gc))) {
34
delete
gc;
35
return
;
36
}
37
}
38
39
}
audioengine.h
butler.h
ARDOUR::AudioEngine::in_process_thread
bool in_process_thread()
ARDOUR::Butler::delegate
bool delegate(sigc::slot< void > const &work)
Definition:
butler.h:66
ARDOUR::Session
Definition:
session.h:211
ARDOUR::Session::engine
AudioEngine & engine()
Definition:
session.h:759
ARDOUR::Session::butler
Butler * butler()
Definition:
session.h:325
ARDOUR::Session::deletion_in_progress
bool deletion_in_progress() const
Definition:
session.h:252
ARDOUR
Definition:
analysis_window.h:44
ARDOUR::rt_safe_delete
void rt_safe_delete(ARDOUR::Session *s, C *gc)
Definition:
rt_safe_delete.h:28
session.h
libs
ardour
ardour
rt_safe_delete.h
Generated on Wed Dec 25 2024 05:44:46 for Ardour by
1.9.1