Link Here
|
|
|
1 |
From: Hans de Goede <hdegoede@redhat.com> |
2 |
Date: Thu, 28 Aug 2014 12:58:05 +0200 |
3 |
Subject: Reference the widget before returning it from ::create methods |
4 |
|
5 |
--- src/cardwidget.cc.orig 2011-08-12 14:18:44 UTC |
6 |
+++ src/cardwidget.cc |
7 |
@@ -45,6 +45,7 @@ CardWidget* CardWidget::create() { |
8 |
CardWidget* w; |
9 |
Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "cardWidget"); |
10 |
x->get_widget_derived("cardWidget", w); |
11 |
+ w->reference(); |
12 |
return w; |
13 |
} |
14 |
|
15 |
--- src/channelwidget.cc.orig 2011-03-10 07:39:25 UTC |
16 |
+++ src/channelwidget.cc |
17 |
@@ -53,6 +53,7 @@ ChannelWidget* ChannelWidget::create() { |
18 |
x->add_from_file(GLADE_FILE, "adjustment1"); |
19 |
x->add_from_file(GLADE_FILE, "channelWidget"); |
20 |
x->get_widget_derived("channelWidget", w); |
21 |
+ w->reference(); |
22 |
return w; |
23 |
} |
24 |
|
25 |
--- src/mainwindow.cc.orig 2012-12-17 09:19:04 UTC |
26 |
+++ src/mainwindow.cc |
27 |
@@ -298,6 +298,7 @@ void MainWindow::updateCard(const pa_car |
28 |
else { |
29 |
cardWidgets[info.index] = w = CardWidget::create(); |
30 |
cardsVBox->pack_start(*w, false, false, 0); |
31 |
+ w->unreference(); |
32 |
w->index = info.index; |
33 |
is_new = true; |
34 |
} |
35 |
@@ -414,6 +415,7 @@ bool MainWindow::updateSink(const pa_sin |
36 |
sinkWidgets[info.index] = w = SinkWidget::create(this); |
37 |
w->setChannelMap(info.channel_map, !!(info.flags & PA_SINK_DECIBEL_VOLUME)); |
38 |
sinksVBox->pack_start(*w, false, false, 0); |
39 |
+ w->unreference(); |
40 |
w->index = info.index; |
41 |
w->monitor_index = info.monitor_source; |
42 |
is_new = true; |
43 |
@@ -567,6 +569,7 @@ void MainWindow::updateSource(const pa_s |
44 |
sourceWidgets[info.index] = w = SourceWidget::create(this); |
45 |
w->setChannelMap(info.channel_map, !!(info.flags & PA_SOURCE_DECIBEL_VOLUME)); |
46 |
sourcesVBox->pack_start(*w, false, false, 0); |
47 |
+ w->unreference(); |
48 |
w->index = info.index; |
49 |
is_new = true; |
50 |
|
51 |
@@ -682,6 +685,7 @@ void MainWindow::updateSinkInput(const p |
52 |
sinkInputWidgets[info.index] = w = SinkInputWidget::create(this); |
53 |
w->setChannelMap(info.channel_map, true); |
54 |
streamsVBox->pack_start(*w, false, false, 0); |
55 |
+ w->unreference(); |
56 |
w->index = info.index; |
57 |
w->clientIndex = info.client; |
58 |
is_new = true; |
59 |
@@ -737,6 +741,7 @@ void MainWindow::updateSourceOutput(cons |
60 |
w->setChannelMap(info.channel_map, true); |
61 |
#endif |
62 |
recsVBox->pack_start(*w, false, false, 0); |
63 |
+ w->unreference(); |
64 |
w->index = info.index; |
65 |
w->clientIndex = info.client; |
66 |
is_new = true; |
67 |
@@ -830,6 +835,7 @@ bool MainWindow::createEventRoleWidget() |
68 |
|
69 |
eventRoleWidget = RoleWidget::create(); |
70 |
streamsVBox->pack_start(*eventRoleWidget, false, false, 0); |
71 |
+ eventRoleWidget->unreference(); |
72 |
eventRoleWidget->role = "sink-input-by-media-role:event"; |
73 |
eventRoleWidget->setChannelMap(cm, true); |
74 |
|
75 |
--- src/rolewidget.cc.orig 2011-03-10 07:39:25 UTC |
76 |
+++ src/rolewidget.cc |
77 |
@@ -40,6 +40,7 @@ RoleWidget* RoleWidget::create() { |
78 |
RoleWidget* w; |
79 |
Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "streamWidget"); |
80 |
x->get_widget_derived("streamWidget", w); |
81 |
+ w->reference(); |
82 |
return w; |
83 |
} |
84 |
|
85 |
--- src/sinkinputwidget.cc.orig 2011-03-10 07:39:25 UTC |
86 |
+++ src/sinkinputwidget.cc |
87 |
@@ -43,6 +43,7 @@ SinkInputWidget* SinkInputWidget::create |
88 |
Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "streamWidget"); |
89 |
x->get_widget_derived("streamWidget", w); |
90 |
w->init(mainWindow); |
91 |
+ w->reference(); |
92 |
return w; |
93 |
} |
94 |
|
95 |
--- src/sinkwidget.cc.orig 2012-12-17 09:50:42 UTC |
96 |
+++ src/sinkwidget.cc |
97 |
@@ -70,6 +70,7 @@ SinkWidget* SinkWidget::create(MainWindo |
98 |
Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "deviceWidget"); |
99 |
x->get_widget_derived("deviceWidget", w); |
100 |
w->init(mainWindow, "sink"); |
101 |
+ w->reference(); |
102 |
return w; |
103 |
} |
104 |
|
105 |
--- src/sourceoutputwidget.cc.orig 2011-08-08 13:33:17 UTC |
106 |
+++ src/sourceoutputwidget.cc |
107 |
@@ -49,6 +49,7 @@ SourceOutputWidget* SourceOutputWidget:: |
108 |
Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "streamWidget"); |
109 |
x->get_widget_derived("streamWidget", w); |
110 |
w->init(mainWindow); |
111 |
+ w->reference(); |
112 |
return w; |
113 |
} |
114 |
|
115 |
--- src/sourcewidget.cc.orig 2011-03-10 07:39:25 UTC |
116 |
+++ src/sourcewidget.cc |
117 |
@@ -35,6 +35,7 @@ SourceWidget* SourceWidget::create(MainW |
118 |
Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "deviceWidget"); |
119 |
x->get_widget_derived("deviceWidget", w); |
120 |
w->init(mainWindow, "source"); |
121 |
+ w->reference(); |
122 |
return w; |
123 |
} |
124 |
|
125 |
--- src/streamwidget.cc.orig 2011-03-10 07:39:25 UTC |
126 |
+++ src/streamwidget.cc |
127 |
@@ -77,6 +77,7 @@ void StreamWidget::setChannelMap(const p |
128 |
snprintf(text, sizeof(text), "<b>%s</b>", pa_channel_position_to_pretty_string(m.map[i])); |
129 |
cw->channelLabel->set_markup(text); |
130 |
channelsVBox->pack_start(*cw, false, false, 0); |
131 |
+ cw->unreference(); |
132 |
} |
133 |
channelWidgets[m.channels-1]->last = true; |
134 |
channelWidgets[m.channels-1]->setBaseVolume(PA_VOLUME_NORM); |