- Timestamp:
- May 23, 2011, 8:57:46 PM (13 years ago)
- Branches:
- master, release-1.10, release-1.8, release-1.9
- Children:
- 1d21d9f
- Parents:
- 117b2ba
- git-author:
- David Benjamin <davidben@mit.edu> (03/02/11 13:47:21)
- git-committer:
- David Benjamin <davidben@mit.edu> (05/23/11 20:57:46)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
select.c
r117b2ba rba12b44 2 2 3 3 static GMainLoop *loop = NULL; 4 static GMainContext *context; 4 5 static int dispatch_active = 0; 5 6 … … 307 308 void owl_select_run_loop(void) 308 309 { 309 loop = g_main_loop_new(NULL, FALSE); 310 context = g_main_context_default(); 311 loop = g_main_loop_new(context, FALSE); 310 312 g_main_loop_run(loop); 311 313 } … … 318 320 } 319 321 } 322 323 typedef struct _owl_task { /*noproto*/ 324 void (*cb)(void *); 325 void *cbdata; 326 void (*destroy_cbdata)(void *); 327 } owl_task; 328 329 static gboolean _run_task(gpointer data) 330 { 331 owl_task *t = data; 332 if (t->cb) 333 t->cb(t->cbdata); 334 return FALSE; 335 } 336 337 static void _destroy_task(void *data) 338 { 339 owl_task *t = data; 340 if (t->destroy_cbdata) 341 t->destroy_cbdata(t->cbdata); 342 g_free(t); 343 } 344 345 void owl_select_post_task(void (*cb)(void*), void *cbdata, void (*destroy_cbdata)(void*)) 346 { 347 GSource *source = g_idle_source_new(); 348 owl_task *t = g_new0(owl_task, 1); 349 t->cb = cb; 350 t->cbdata = cbdata; 351 t->destroy_cbdata = destroy_cbdata; 352 g_source_set_priority(source, G_PRIORITY_DEFAULT); 353 g_source_set_callback(source, _run_task, t, _destroy_task); 354 g_source_attach(source, context); 355 g_source_unref(source); 356 }
Note: See TracChangeset
for help on using the changeset viewer.