1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
|
Work around a C++11 incompatibility when compiling the gperf-generated
'jsonrpc_methods.cc' with -std=c++11:
default/src/gx_head/engine/jsonrpc_methods.cc: In function ‘const CmdConnection::methodnames* in_word_set(const char*, unsigned int)’:
default/src/gx_head/engine/jsonrpc_methods.cc:211:26: error: reference to ‘hash’ is ambiguous
register int key = hash (str, len);
^
The solution is to run 'gperf -L C++' so that it generates code with
appropriate C++ name-spacing to avoid the ambiguity.
--- guitarix-0.33.0/tools/make_jsonrpc_methods 2015-10-31 12:45:52.756587435 +0100
+++ guitarix-0.33.0/tools/make_jsonrpc_methods 2015-10-31 12:47:02.801103366 +0100
@@ -14,7 +14,7 @@ def add_enums(template_name, hashtable_n
hashtable = open(hashtable_name, "w")
hashtable.write(headline)
hashtable.flush()
- gperf = Popen(gperf_program, stdin=PIPE, stdout=hashtable)
+ gperf = Popen([gperf_program, "-L", "C++"], stdin=PIPE, stdout=hashtable)
enumlist = []
section = 0
in_comment = False
--- guitarix-0.33.0/src/gx_head/engine/jsonrpc.cpp 2015-10-31 12:50:33.934647842 +0100
+++ guitarix-0.33.0/src/gx_head/engine/jsonrpc.cpp 2015-10-31 12:50:51.238773730 +0100
@@ -1171,7 +1171,7 @@ bool CmdConnection::request(gx_system::J
}
}
jp.next(gx_system::JsonParser::end_object);
- const methodnames *p = in_word_set(method.c_str(), method.size());
+ const methodnames *p = Perfect_Hash::in_word_set(method.c_str(), method.size());
if (!p) {
throw RpcError(-32601, Glib::ustring::compose("Method not found -- '%1'", method));
}
The following part is adapted from an upstream patch for the new libsigc++.
commit 001aa683814a7bf4537882c7c3acf1dafd851cd5
Author: Hermann Meyer <brummer-@web.de>
Date: Sat Oct 31 09:33:16 2015 +0100
* fix libsigc++ removes sigc::group
diff --git a/src/gx_head/gui/avahi_discover.cpp b/src/gx_head/gui/avahi_discover.cpp
index c49746e..88993c2 100644
--- a/src/gx_head/gui/avahi_discover.cpp
+++ b/src/gx_head/gui/avahi_discover.cpp
@@ -193,7 +193,9 @@ SelectInstance::SelectInstance(gx_system::CmdlineOptions& options, Gtk::Window *
win->signal_response().connect(sigc::mem_fun(this, &SelectInstance::on_response));
bld->get_widget("treeview", view);
view->signal_row_activated().connect(
- sigc::group(sigc::mem_fun(win, &Gtk::Dialog::response), 1));
+ sigc::mem_fun(this,&SelectInstance::on_row));
+ //view->signal_row_activated().connect(
+ //sigc::group(sigc::mem_fun(win, &Gtk::Dialog::response), 1));
view->set_model(Gtk::ListStore::create(cols));
view->get_selection()->set_mode(Gtk::SELECTION_BROWSE);
view->get_selection()->signal_changed().connect(
@@ -242,6 +244,10 @@ void SelectInstance::on_avahi_changed() {
}
}
+void SelectInstance::on_row(const Gtk::TreePath& path, Gtk::TreeViewColumn* column) {
+ on_response(1);
+}
+
void SelectInstance::on_response(int response_id) {
if (response_id == 1) {
Gtk::TreeIter i = view->get_selection()->get_selected();
diff --git a/src/gx_head/gui/gx_main.cpp b/src/gx_head/gui/gx_main.cpp
index d1ad329..a207aa6 100644
--- a/src/gx_head/gui/gx_main.cpp
+++ b/src/gx_head/gui/gx_main.cpp
@@ -281,8 +281,10 @@ void ErrorPopup::show_msg() {
align->set_padding(50,20,0,10);
Gtk::VBox *vbox = dynamic_cast<Gtk::VBox *>(dialog->get_child());
vbox->set_redraw_on_allocate(true);
- vbox->signal_expose_event().connect(
- sigc::group(&gx_cairo::error_box_expose,GTK_WIDGET(vbox->gobj()),sigc::_1,(void*)0),false);
+ g_signal_connect(GTK_WIDGET(vbox->gobj()), "expose-event",
+ G_CALLBACK(gx_cairo::error_box_expose), NULL);
+ // vbox->signal_expose_event().connect(
+ //sigc::group(&gx_cairo::error_box_expose,GTK_WIDGET(vbox->gobj()),sigc::_1,(void*)0),false);
dialog->set_title(_("GUITARIX ERROR"));
dialog->signal_response().connect(
sigc::mem_fun(*this, &ErrorPopup::on_response));
@@ -306,9 +308,11 @@ GxSplashBox::GxSplashBox()
: Gtk::Window(Gtk::WINDOW_POPUP) {
set_redraw_on_allocate(true);
set_app_paintable();
- signal_expose_event().connect(
- sigc::group(&gx_cairo::splash_expose, GTK_WIDGET(gobj()),
- sigc::_1, (void*)0), false);
+ g_signal_connect(GTK_WIDGET(gobj()), "expose-event",
+ G_CALLBACK(gx_cairo::splash_expose), NULL);
+ //signal_expose_event().connect(
+ // sigc::group(&gx_cairo::splash_expose, GTK_WIDGET(gobj()),
+ // sigc::_1, (void*)0), false);
set_decorated(false);
set_type_hint(Gdk::WINDOW_TYPE_HINT_SPLASHSCREEN);
set_position(Gtk::WIN_POS_CENTER );
diff --git a/src/gx_head/gui/gx_main_window.cpp b/src/gx_head/gui/gx_main_window.cpp
index 23c9ae6..eb0e201 100644
--- a/src/gx_head/gui/gx_main_window.cpp
+++ b/src/gx_head/gui/gx_main_window.cpp
@@ -1303,6 +1303,23 @@ void MainWindow::on_log_activate() {
fLoggingWindow.hide();
}
}
+// show loggingbox
+bool MainWindow::on_log_activated(GdkEventButton* ev) {
+ if (ev->type == GDK_BUTTON_PRESS && ev->button == 1) {
+ if (!actions.loggingbox->get_active()) {
+ actions.loggingbox->set_active(true);
+ gint rxorg, ryorg;
+ window->get_position(rxorg, ryorg);
+ fLoggingWindow.move(rxorg+5, ryorg+272);
+ fLoggingWindow.show_all();
+ on_msg_level_changed();
+ } else {
+ fLoggingWindow.hide();
+ actions.loggingbox->set_active(false);
+ }
+ }
+ return true;
+}
void MainWindow::on_engine_toggled() {
gx_engine::GxEngineState s;
@@ -2119,6 +2136,14 @@ bool MainWindow::on_toggle_mute(GdkEventButton* ev) {
return true;
}
+bool MainWindow::on_jackserverconnection(GdkEventButton* ev) {
+ if (ev->type == GDK_BUTTON_PRESS && ev->button == 1) {
+ bool v = actions.jackserverconnection->get_active();
+ actions.jackserverconnection->set_active(!v);
+ }
+ return true;
+}
+
void MainWindow::on_msg_level_changed() {
switch (fLoggingWindow.get_unseen_msg_level()) {
case GxLogger::kWarning: logstate_image->set(pixbuf_log_yellow); break;
@@ -2683,12 +2708,14 @@ MainWindow::MainWindow(gx_engine::GxMachineBase& machine_, gx_system::CmdlineOpt
*/
if (jack) {
jackd_image->set(pixbuf_jack_disconnected);
- jackd_image->get_parent()->signal_button_press_event().connect(
- sigc::bind_return(
- sigc::group(
- sigc::ptr_fun(toggle_action),
- actions.jackserverconnection),
- true));
+ jackd_image->get_parent()->signal_button_press_event().connect(
+ sigc::mem_fun(*this, &MainWindow::on_jackserverconnection));
+ //jackd_image->get_parent()->signal_button_press_event().connect(
+ // sigc::bind_return(
+ // sigc::group(
+ // sigc::ptr_fun(toggle_action),
+ // actions.jackserverconnection),
+ // true));
} else {
jackd_image->hide();
}
@@ -2823,11 +2850,14 @@ MainWindow::MainWindow(gx_engine::GxMachineBase& machine_, gx_system::CmdlineOpt
false));
on_msg_level_changed();
logstate_image->get_parent()->signal_button_press_event().connect(
- sigc::bind_return(
- sigc::group(
- sigc::ptr_fun(toggle_action),
- actions.loggingbox),
- true));
+ sigc::mem_fun(*this, &MainWindow::on_log_activated));
+
+ //logstate_image->get_parent()->signal_button_press_event().connect(
+ //sigc::bind_return(
+ // sigc::group(
+ // sigc::ptr_fun(toggle_action),
+ // actions.loggingbox),
+ // true));
/*
** load plugin definitions into plugin_dict, add to effects_toolpalette
diff --git a/src/gx_head/gui/gx_portmap.cpp b/src/gx_head/gui/gx_portmap.cpp
index d8a6ae6..e711ee7 100644
--- a/src/gx_head/gui/gx_portmap.cpp
+++ b/src/gx_head/gui/gx_portmap.cpp
@@ -578,12 +578,16 @@ PortMapWindow::PortMapWindow(Glib::RefPtr<gx_gui::GxBuilder> bld, gx_jack::GxJac
b->set_name("rack_button");
Gtk::VBox *vbox1;
bld->find_widget("dialog-vbox1", vbox1);
- vbox1->signal_expose_event().connect(
- sigc::group(&gx_cairo::rectangle_skin_color_expose,GTK_WIDGET(vbox1->gobj()),sigc::_1,(void*)0),false);
+ g_signal_connect(GTK_WIDGET(vbox1->gobj()), "expose-event",
+ G_CALLBACK(gx_cairo::rectangle_skin_color_expose), NULL);
+ // vbox1->signal_expose_event().connect(
+ //sigc::group(&gx_cairo::rectangle_skin_color_expose,GTK_WIDGET(vbox1->gobj()),sigc::_1,(void*)0),false);
Gtk::VBox *vbox2;
bld->find_widget("dialog-vbox2", vbox2);
- vbox2->signal_expose_event().connect(
- sigc::group(&gx_cairo::rectangle_skin_color_expose,GTK_WIDGET(vbox2->gobj()),sigc::_1,(void*)0),false);
+ g_signal_connect(GTK_WIDGET(vbox2->gobj()), "expose-event",
+ G_CALLBACK(gx_cairo::rectangle_skin_color_expose), NULL);
+ // vbox2->signal_expose_event().connect(
+// sigc::group(&gx_cairo::rectangle_skin_color_expose,GTK_WIDGET(vbox2->gobj()),sigc::_1,(void*)0),false);
vbox1->set_redraw_on_allocate(true);
vbox2->set_redraw_on_allocate(true);
for (int i = 0; i < number_of_ports; ++i) {
diff --git a/src/headers/avahi_discover.h b/src/headers/avahi_discover.h
index 5af5949..b6f523a 100644
--- a/src/headers/avahi_discover.h
+++ b/src/headers/avahi_discover.h
@@ -91,6 +91,7 @@ private:
} cols;
private:
void on_response(int response_id);
+ void on_row(const Gtk::TreePath& path, Gtk::TreeViewColumn* column);
void on_avahi_changed();
void on_selection_changed();
public:
diff --git a/src/headers/gx_main_window.h b/src/headers/gx_main_window.h
index 3b54285..e7c02ce 100644
--- a/src/headers/gx_main_window.h
+++ b/src/headers/gx_main_window.h
@@ -720,6 +720,7 @@ private:
void on_load_ladspa();
void delete_select_jack_control();
void on_log_activate();
+ bool on_log_activated(GdkEventButton* ev);
void do_program_change(int pgm);
void on_engine_toggled();
void on_engine_state_change(gx_engine::GxEngineState state);
@@ -728,6 +729,7 @@ private:
void setup_tuner_temperament(Gxw::RackTuner& tuner);
void setup_tuner(Gxw::RackTuner& tuner);
bool on_toggle_mute(GdkEventButton* ev);
+ bool on_jackserverconnection(GdkEventButton* ev);
void on_msg_level_changed();
void on_ampdetail_switch(bool compress, bool setparam);
void on_show_oscilloscope(bool v);
The following is adapted from this upstream patch, which does a whole
bunch of unrelated things.
commit 44ab541a5a846c0b3832f4225d1ae92183d55550
Author: Hermann Meyer <brummer-@web.de>
Date: Fri Oct 30 08:47:42 2015 +0100
* add 53 tet tuner option
* add online preset download widget (requiers libwebkit-1.0
* fix bug #27
* fix build fail with c++11 system libs (make c++11 default)
--- a/src/LV2/gx_amp.lv2/gxamp_gui.cpp
+++ b/src/LV2/gx_amp.lv2/gxamp_gui.cpp
@@ -124,7 +124,7 @@ void GXPluginGUI::set_skin()
gtk_rc_parse_string (toparse.c_str());
}
-inline std::string to_string(long long _Val)
+inline std::string t_string(long long _Val)
{ // convert int to string
char _Buf[128];
sprintf(_Buf, "%lld", _Val);
@@ -136,7 +136,7 @@ void GXPluginGUI::set_plug_name()
// Here the plugin should have different name for different amp.....
addKnob = "";
plugskin = "amp21.png";
- plug_name = "GUITARIXLV2" + to_string(reinterpret_cast<long long>(this));
+ plug_name = "GUITARIXLV2" + t_string(reinterpret_cast<long long>(this));
//fprintf(stderr,"%s",plug_name.c_str());
}
diff --git a/src/LV2/gx_amp_stereo.lv2/gxamp_stereo_gui.cpp b/src/LV2/gx_amp_stereo.lv2/gxamp_stereo_gui.cpp
index d5947ee..edc1caa 100644
--- a/src/LV2/gx_amp_stereo.lv2/gxamp_stereo_gui.cpp
+++ b/src/LV2/gx_amp_stereo.lv2/gxamp_stereo_gui.cpp
@@ -124,7 +124,7 @@ void GXPluginGUI::set_skin()
gtk_rc_parse_string (toparse.c_str());
}
-inline std::string to_string(long long _Val)
+inline std::string t_string(long long _Val)
{ // convert int to string
char _Buf[128];
sprintf(_Buf, "%lld", _Val);
@@ -135,7 +135,7 @@ void GXPluginGUI::set_plug_name()
{
addKnob = "";
plugskin = "amp21.png";
- plug_name = "GUITARIXLV2" + to_string(reinterpret_cast<long long>(this));
+ plug_name = "GUITARIXLV2" + t_string(reinterpret_cast<long long>(this));
}
GtkWidget* GXPluginGUI::make_gui()
|