diff options
author | Christian Grothoff <christian@grothoff.org> | 2005-07-15 10:51:45 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2005-07-15 10:51:45 +0000 |
commit | 47ea42888e1a84ec8b4a226d3ca43a51e66c8d1b (patch) | |
tree | ea8045357b14d76d1fcd3772ce849dc151b368e4 | |
parent | e5db1b3022aba7008efcc979dc87e97a95573cdb (diff) | |
download | gnunet-gtk-47ea42888e1a84ec8b4a226d3ca43a51e66c8d1b.tar.gz gnunet-gtk-47ea42888e1a84ec8b4a226d3ca43a51e66c8d1b.zip |
gtk fixes
-rw-r--r-- | TODO | 4 | ||||
-rw-r--r-- | src/common/helper.c | 47 | ||||
-rw-r--r-- | src/core/main.c | 2 | ||||
-rw-r--r-- | src/plugins/daemon/daemon.c | 2 | ||||
-rw-r--r-- | src/plugins/stats/functions.c | 30 |
5 files changed, 41 insertions, 44 deletions
@@ -8,9 +8,7 @@ | |||
8 | 5) why can the "file sharing" tab not be selected first | 8 | 5) why can the "file sharing" tab not be selected first |
9 | (I can select first "General" and then "file sharing"!, | 9 | (I can select first "General" and then "file sharing"!, |
10 | glade shows no difference between the two!!!) | 10 | glade shows no difference between the two!!!) |
11 | 6) stats only work if LANG for gnunetd and gnunet-gtk match | 11 | 6) i18n does not work (UTF-8/pango problems) |
12 | 7) gtkSaveCall un-queueing sometimes fails, then | ||
13 | gnunet-gtk will not shutdown (why? when?)! | ||
14 | 12 | ||
15 | Later (0.7.1+): | 13 | Later (0.7.1+): |
16 | 1) auto-rename downloaded files | 14 | 1) auto-rename downloaded files |
diff --git a/src/common/helper.c b/src/common/helper.c index 8d597df4..c150b989 100644 --- a/src/common/helper.c +++ b/src/common/helper.c | |||
@@ -33,6 +33,7 @@ typedef struct { | |||
33 | Semaphore * sem; | 33 | Semaphore * sem; |
34 | void * args; | 34 | void * args; |
35 | SimpleCallback func; | 35 | SimpleCallback func; |
36 | int destroyed; | ||
36 | } SaveCall; | 37 | } SaveCall; |
37 | 38 | ||
38 | typedef struct Plugin { | 39 | typedef struct Plugin { |
@@ -69,9 +70,27 @@ static Plugin * plugin; | |||
69 | 70 | ||
70 | static gboolean saveCallWrapper(gpointer data) { | 71 | static gboolean saveCallWrapper(gpointer data) { |
71 | SaveCall * call = data; | 72 | SaveCall * call = data; |
73 | int i; | ||
74 | |||
75 | /* clearly, we are no longer pending, | ||
76 | so remove from psc */ | ||
77 | if (call->sem != NULL) { | ||
78 | MUTEX_LOCK(&sclock); | ||
79 | for (i=0;i<pscCount;i++) { | ||
80 | if (psc[i] == call) { | ||
81 | psc[i] = psc[pscCount-1]; | ||
82 | break; | ||
83 | } | ||
84 | } | ||
85 | GNUNET_ASSERT(i != pscCount); | ||
86 | GROW(psc, | ||
87 | pscCount, | ||
88 | pscCount-1); | ||
89 | MUTEX_UNLOCK(&sclock); | ||
90 | } | ||
72 | 91 | ||
73 | call->func(call->args); | 92 | call->func(call->args); |
74 | if (call->sem != NULL) | 93 | if (call->sem != NULL) |
75 | SEMAPHORE_UP(call->sem); | 94 | SEMAPHORE_UP(call->sem); |
76 | return FALSE; | 95 | return FALSE; |
77 | } | 96 | } |
@@ -84,7 +103,6 @@ static gboolean saveCallWrapper(gpointer data) { | |||
84 | void gtkSaveCall(SimpleCallback func, | 103 | void gtkSaveCall(SimpleCallback func, |
85 | void * args) { | 104 | void * args) { |
86 | SaveCall call; | 105 | SaveCall call; |
87 | int i; | ||
88 | 106 | ||
89 | MUTEX_LOCK(&sclock); | 107 | MUTEX_LOCK(&sclock); |
90 | if ( (saveCallsUp == NO) || | 108 | if ( (saveCallsUp == NO) || |
@@ -92,27 +110,15 @@ void gtkSaveCall(SimpleCallback func, | |||
92 | call.args = args; | 110 | call.args = args; |
93 | call.func = func; | 111 | call.func = func; |
94 | call.sem = SEMAPHORE_NEW(0); | 112 | call.sem = SEMAPHORE_NEW(0); |
113 | call.destroyed = 0; | ||
95 | GROW(psc, | 114 | GROW(psc, |
96 | pscCount, | 115 | pscCount, |
97 | pscCount+1); | 116 | pscCount+1); |
98 | psc[pscCount-1] = &call; | 117 | psc[pscCount-1] = &call; |
99 | MUTEX_UNLOCK(&sclock); | 118 | gtk_idle_add(&saveCallWrapper, |
100 | gtk_idle_add(&saveCallWrapper, | ||
101 | &call); | 119 | &call); |
102 | SEMAPHORE_DOWN(call.sem); | ||
103 | /* remove from psc list */ | ||
104 | MUTEX_LOCK(&sclock); | ||
105 | for (i=0;i<pscCount;i++) { | ||
106 | if (psc[i] == &call) { | ||
107 | psc[i] = psc[pscCount-1]; | ||
108 | break; | ||
109 | } | ||
110 | } | ||
111 | GNUNET_ASSERT(i != pscCount); | ||
112 | GROW(psc, | ||
113 | pscCount, | ||
114 | pscCount-1); | ||
115 | MUTEX_UNLOCK(&sclock); | 120 | MUTEX_UNLOCK(&sclock); |
121 | SEMAPHORE_DOWN(call.sem); | ||
116 | SEMAPHORE_FREE(call.sem); | 122 | SEMAPHORE_FREE(call.sem); |
117 | } else { | 123 | } else { |
118 | MUTEX_UNLOCK(&sclock); | 124 | MUTEX_UNLOCK(&sclock); |
@@ -131,8 +137,11 @@ int gtkRunSomeSaveCalls() { | |||
131 | return NO; | 137 | return NO; |
132 | } | 138 | } |
133 | i = randomi(pscCount); | 139 | i = randomi(pscCount); |
134 | if (TRUE == g_idle_remove_by_data(psc[i]->args)) | 140 | g_idle_remove_by_data(psc[i]->args); |
135 | psc[i]->func(psc[i]); | 141 | /* yes, ignore return value here, GTK seems |
142 | to be dropping these during shutdown, and | ||
143 | we still want to run them nevertheless */ | ||
144 | psc[i]->func(psc[i]); | ||
136 | MUTEX_UNLOCK(&sclock); | 145 | MUTEX_UNLOCK(&sclock); |
137 | gnunet_util_sleep(50 * cronMILLIS); | 146 | gnunet_util_sleep(50 * cronMILLIS); |
138 | /* sleep here is somewhat important, first of | 147 | /* sleep here is somewhat important, first of |
diff --git a/src/core/main.c b/src/core/main.c index f3dedca7..9d6c0638 100644 --- a/src/core/main.c +++ b/src/core/main.c | |||
@@ -111,7 +111,7 @@ int main(int argc, | |||
111 | /* start the event loop */ | 111 | /* start the event loop */ |
112 | gdk_threads_enter(); | 112 | gdk_threads_enter(); |
113 | gtk_main(); | 113 | gtk_main(); |
114 | gdk_threads_leave(); | 114 | gdk_threads_leave(); |
115 | setCustomLogProc(NULL); | 115 | setCustomLogProc(NULL); |
116 | while (YES == gtkRunSomeSaveCalls()) ; | 116 | while (YES == gtkRunSomeSaveCalls()) ; |
117 | stopCron(); | 117 | stopCron(); |
diff --git a/src/plugins/daemon/daemon.c b/src/plugins/daemon/daemon.c index c0d4a4f4..ab765fab 100644 --- a/src/plugins/daemon/daemon.c +++ b/src/plugins/daemon/daemon.c | |||
@@ -82,7 +82,7 @@ static void updateAppModelSafe(void * unused) { | |||
82 | gtk_list_store_set(model, | 82 | gtk_list_store_set(model, |
83 | &iter, | 83 | &iter, |
84 | 0, pos, | 84 | 0, pos, |
85 | 1, desc, | 85 | 1, dgettext("GNUnet", desc), |
86 | -1); | 86 | -1); |
87 | FREENONNULL(desc); | 87 | FREENONNULL(desc); |
88 | } | 88 | } |
diff --git a/src/plugins/stats/functions.c b/src/plugins/stats/functions.c index 6e1c84c0..99d61239 100644 --- a/src/plugins/stats/functions.c +++ b/src/plugins/stats/functions.c | |||
@@ -113,8 +113,7 @@ static int getConnectedNodesStat(const void * closure, | |||
113 | if (OK != getStatValue(&val, | 113 | if (OK != getStatValue(&val, |
114 | NULL, | 114 | NULL, |
115 | NULL, | 115 | NULL, |
116 | dgettext("GNUnet", | 116 | "# of connected peers")) |
117 | "# of connected peers"))) | ||
118 | return SYSERR; | 117 | return SYSERR; |
119 | data[0][0] = 0.8 * val / connectionGoal; | 118 | data[0][0] = 0.8 * val / connectionGoal; |
120 | return OK; | 119 | return OK; |
@@ -127,8 +126,7 @@ static int getCPULoadStat(const void * closure, | |||
127 | if (OK != getStatValue(&val, | 126 | if (OK != getStatValue(&val, |
128 | NULL, | 127 | NULL, |
129 | NULL, | 128 | NULL, |
130 | dgettext("GNUnet", | 129 | "% of allowed cpu load")) |
131 | "% of allowed cpu load"))) | ||
132 | return SYSERR; | 130 | return SYSERR; |
133 | data[0][0] = val / 125.0; | 131 | data[0][0] = val / 125.0; |
134 | return OK; | 132 | return OK; |
@@ -151,21 +149,18 @@ static int getTrafficRecvStats(const void * closure, | |||
151 | if (OK != getStatValue(&total, | 149 | if (OK != getStatValue(&total, |
152 | <otal, | 150 | <otal, |
153 | &dtime, | 151 | &dtime, |
154 | dgettext("GNUnet", | 152 | "# bytes decrypted")) |
155 | "# bytes decrypted"))) | ||
156 | return SYSERR; | 153 | return SYSERR; |
157 | if (OK != getStatValue(&noise, | 154 | if (OK != getStatValue(&noise, |
158 | &lnoise, | 155 | &lnoise, |
159 | NULL, | 156 | NULL, |
160 | dgettext("GNUnet", | 157 | "# bytes of noise received")) |
161 | "# bytes of noise received"))) | ||
162 | return SYSERR; | 158 | return SYSERR; |
163 | i = 0; | 159 | i = 0; |
164 | buffer = MALLOC(512); | 160 | buffer = MALLOC(512); |
165 | SNPRINTF(buffer, | 161 | SNPRINTF(buffer, |
166 | 512, | 162 | 512, |
167 | dgettext("GNUnet", | 163 | "# bytes received of type %d", |
168 | "# bytes received of type %d"), | ||
169 | GAP_p2p_PROTO_RESULT); | 164 | GAP_p2p_PROTO_RESULT); |
170 | if (OK != getStatValue(&content, | 165 | if (OK != getStatValue(&content, |
171 | &lcontent, | 166 | &lcontent, |
@@ -177,8 +172,7 @@ static int getTrafficRecvStats(const void * closure, | |||
177 | i = 0; | 172 | i = 0; |
178 | SNPRINTF(buffer, | 173 | SNPRINTF(buffer, |
179 | 512, | 174 | 512, |
180 | dgettext("GNUnet", | 175 | "# bytes received of type %d", |
181 | "# bytes received of type %d"), | ||
182 | GAP_p2p_PROTO_QUERY); | 176 | GAP_p2p_PROTO_QUERY); |
183 | if (OK != getStatValue(&queries, | 177 | if (OK != getStatValue(&queries, |
184 | &lqueries, | 178 | &lqueries, |
@@ -231,21 +225,18 @@ static int getTrafficSendStats(const void * closure, | |||
231 | if (OK != getStatValue(&total, | 225 | if (OK != getStatValue(&total, |
232 | <otal, | 226 | <otal, |
233 | &dtime, | 227 | &dtime, |
234 | dgettext("GNUnet", | 228 | "# bytes encrypted")) |
235 | "# bytes encrypted"))) | ||
236 | return SYSERR; | 229 | return SYSERR; |
237 | if (OK != getStatValue(&noise, | 230 | if (OK != getStatValue(&noise, |
238 | &lnoise, | 231 | &lnoise, |
239 | NULL, | 232 | NULL, |
240 | dgettext("GNUnet", | 233 | "# bytes noise sent")) |
241 | "# bytes noise sent"))) | ||
242 | return SYSERR; | 234 | return SYSERR; |
243 | i = 0; | 235 | i = 0; |
244 | buffer = MALLOC(512); | 236 | buffer = MALLOC(512); |
245 | SNPRINTF(buffer, | 237 | SNPRINTF(buffer, |
246 | 512, | 238 | 512, |
247 | dgettext("GNUnet", | 239 | "# bytes transmitted of type %d", |
248 | "# bytes transmitted of type %d"), | ||
249 | GAP_p2p_PROTO_RESULT); | 240 | GAP_p2p_PROTO_RESULT); |
250 | if (OK != getStatValue(&content, | 241 | if (OK != getStatValue(&content, |
251 | &lcontent, | 242 | &lcontent, |
@@ -257,8 +248,7 @@ static int getTrafficSendStats(const void * closure, | |||
257 | i = 0; | 248 | i = 0; |
258 | SNPRINTF(buffer, | 249 | SNPRINTF(buffer, |
259 | 512, | 250 | 512, |
260 | dgettext("GNUnet", | 251 | "# bytes received of type %d", |
261 | "# bytes received of type %d"), | ||
262 | GAP_p2p_PROTO_QUERY); | 252 | GAP_p2p_PROTO_QUERY); |
263 | if (OK == getStatValue(&queries, | 253 | if (OK == getStatValue(&queries, |
264 | &lqueries, | 254 | &lqueries, |