aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2005-07-15 10:51:45 +0000
committerChristian Grothoff <christian@grothoff.org>2005-07-15 10:51:45 +0000
commit47ea42888e1a84ec8b4a226d3ca43a51e66c8d1b (patch)
treeea8045357b14d76d1fcd3772ce849dc151b368e4
parente5db1b3022aba7008efcc979dc87e97a95573cdb (diff)
downloadgnunet-gtk-47ea42888e1a84ec8b4a226d3ca43a51e66c8d1b.tar.gz
gnunet-gtk-47ea42888e1a84ec8b4a226d3ca43a51e66c8d1b.zip
gtk fixes
-rw-r--r--TODO4
-rw-r--r--src/common/helper.c47
-rw-r--r--src/core/main.c2
-rw-r--r--src/plugins/daemon/daemon.c2
-rw-r--r--src/plugins/stats/functions.c30
5 files changed, 41 insertions, 44 deletions
diff --git a/TODO b/TODO
index 06a833ba..3ab1bcf0 100644
--- a/TODO
+++ b/TODO
@@ -8,9 +8,7 @@
85) why can the "file sharing" tab not be selected first 85) 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!!!)
116) stats only work if LANG for gnunetd and gnunet-gtk match 116) i18n does not work (UTF-8/pango problems)
127) gtkSaveCall un-queueing sometimes fails, then
13 gnunet-gtk will not shutdown (why? when?)!
14 12
15Later (0.7.1+): 13Later (0.7.1+):
161) auto-rename downloaded files 141) 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
38typedef struct Plugin { 39typedef struct Plugin {
@@ -69,9 +70,27 @@ static Plugin * plugin;
69 70
70static gboolean saveCallWrapper(gpointer data) { 71static 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) {
84void gtkSaveCall(SimpleCallback func, 103void 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 &ltotal, 150 &ltotal,
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 &ltotal, 226 &ltotal,
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,