#include "glib.h"Go to the source code of this file.
|
|
Definition at line 38 of file ghook.c. Referenced by g_hook_list_init(). |
|
|
Definition at line 94 of file ghook.c. References _GHook::data, _GHook::destroy, _GHook::flags, _GHook::func, g_chunk_new0, G_HOOK_FLAG_ACTIVE, g_return_val_if_fail, _GHook::hook_id, _GHookList::hook_memchunk, _GHookList::is_setup, _GHook::next, NULL, _GHook::prev, and _GHook::ref_count. Referenced by g_source_add(). 00095 { 00096 GHook *hook; 00097 00098 g_return_val_if_fail (hook_list != NULL, NULL); 00099 g_return_val_if_fail (hook_list->is_setup, NULL); 00100 00101 hook = g_chunk_new0 (GHook, hook_list->hook_memchunk); 00102 hook->data = NULL; 00103 hook->next = NULL; 00104 hook->prev = NULL; 00105 hook->flags = G_HOOK_FLAG_ACTIVE; 00106 hook->ref_count = 0; 00107 hook->hook_id = 0; 00108 hook->func = NULL; 00109 hook->destroy = NULL; 00110 00111 return hook; 00112 }
|
|
||||||||||||
|
Definition at line 629 of file ghook.c. References _GHook::hook_id.
|
|
||||||||||||
|
Definition at line 157 of file ghook.c. References FALSE, g_hook_destroy_link(), g_hook_get(), g_return_val_if_fail, NULL, and TRUE. 00159 { 00160 GHook *hook; 00161 00162 g_return_val_if_fail (hook_list != NULL, FALSE); 00163 g_return_val_if_fail (hook_id > 0, FALSE); 00164 00165 hook = g_hook_get (hook_list, hook_id); 00166 if (hook) 00167 { 00168 g_hook_destroy_link (hook_list, hook); 00169 return TRUE; 00170 } 00171 00172 return FALSE; 00173 }
|
|
||||||||||||
|
||||||||||||||||||||
|
Definition at line 471 of file ghook.c. References G_HOOK_ACTIVE, g_hook_ref(), g_hook_unref(), g_return_val_if_fail, _GHook::hook_id, _GHookList::hooks, _GHook::next, and NULL. Referenced by g_source_remove_by_funcs_user_data(), and g_source_remove_by_source_data(). 00475 { 00476 GHook *hook; 00477 00478 g_return_val_if_fail (hook_list != NULL, NULL); 00479 g_return_val_if_fail (func != NULL, NULL); 00480 00481 hook = hook_list->hooks; 00482 while (hook) 00483 { 00484 GHook *tmp; 00485 00486 /* test only non-destroyed hooks */ 00487 if (!hook->hook_id) 00488 { 00489 hook = hook->next; 00490 continue; 00491 } 00492 00493 g_hook_ref (hook_list, hook); 00494 00495 if (func (hook, data) && hook->hook_id && (!need_valids || G_HOOK_ACTIVE (hook))) 00496 { 00497 g_hook_unref (hook_list, hook); 00498 00499 return hook; 00500 } 00501 00502 tmp = hook->next; 00503 g_hook_unref (hook_list, hook); 00504 hook = tmp; 00505 } 00506 00507 return NULL; 00508 }
|
|
||||||||||||||||
|
Definition at line 511 of file ghook.c. References _GHook::data, G_HOOK_ACTIVE, g_return_val_if_fail, _GHook::hook_id, _GHookList::hooks, _GHook::next, and NULL. Referenced by g_source_remove_by_user_data(). 00514 { 00515 GHook *hook; 00516 00517 g_return_val_if_fail (hook_list != NULL, NULL); 00518 00519 hook = hook_list->hooks; 00520 while (hook) 00521 { 00522 /* test only non-destroyed hooks */ 00523 if (hook->data == data && 00524 hook->hook_id && 00525 (!need_valids || G_HOOK_ACTIVE (hook))) 00526 return hook; 00527 00528 hook = hook->next; 00529 } 00530 00531 return NULL; 00532 }
|
|
||||||||||||||||
|
Definition at line 535 of file ghook.c. References _GHook::func, G_HOOK_ACTIVE, g_return_val_if_fail, _GHook::hook_id, _GHookList::hooks, _GHook::next, and NULL. 00538 { 00539 GHook *hook; 00540 00541 g_return_val_if_fail (hook_list != NULL, NULL); 00542 g_return_val_if_fail (func != NULL, NULL); 00543 00544 hook = hook_list->hooks; 00545 while (hook) 00546 { 00547 /* test only non-destroyed hooks */ 00548 if (hook->func == func && 00549 hook->hook_id && 00550 (!need_valids || G_HOOK_ACTIVE (hook))) 00551 return hook; 00552 00553 hook = hook->next; 00554 } 00555 00556 return NULL; 00557 }
|
|
||||||||||||||||||||
|
Definition at line 560 of file ghook.c. References _GHook::data, _GHook::func, G_HOOK_ACTIVE, g_return_val_if_fail, _GHook::hook_id, _GHookList::hooks, _GHook::next, and NULL. 00564 { 00565 GHook *hook; 00566 00567 g_return_val_if_fail (hook_list != NULL, NULL); 00568 g_return_val_if_fail (func != NULL, NULL); 00569 00570 hook = hook_list->hooks; 00571 while (hook) 00572 { 00573 /* test only non-destroyed hooks */ 00574 if (hook->data == data && 00575 hook->func == func && 00576 hook->hook_id && 00577 (!need_valids || G_HOOK_ACTIVE (hook))) 00578 return hook; 00579 00580 hook = hook->next; 00581 } 00582 00583 return NULL; 00584 }
|
|
||||||||||||
|
Definition at line 398 of file ghook.c. References G_HOOK_IN_CALL, G_HOOK_IS_VALID, g_hook_next_valid(), g_hook_ref(), g_return_val_if_fail, _GHookList::hooks, _GHookList::is_setup, and NULL. Referenced by g_hook_list_invoke(), g_hook_list_invoke_check(), g_hook_list_marshal(), g_hook_list_marshal_check(), and g_main_iterate(). 00400 { 00401 g_return_val_if_fail (hook_list != NULL, NULL); 00402 00403 if (hook_list->is_setup) 00404 { 00405 GHook *hook; 00406 00407 hook = hook_list->hooks; 00408 if (hook) 00409 { 00410 g_hook_ref (hook_list, hook); 00411 if (G_HOOK_IS_VALID (hook) && (may_be_in_call || !G_HOOK_IN_CALL (hook))) 00412 return hook; 00413 else 00414 return g_hook_next_valid (hook_list, hook, may_be_in_call); 00415 } 00416 } 00417 00418 return NULL; 00419 }
|
|
||||||||||||
|
Definition at line 115 of file ghook.c. References g_chunk_free, G_HOOK_IS_UNLINKED, g_return_if_fail, _GHookList::hook_free, _GHookList::hook_memchunk, _GHookList::is_setup, and NULL. Referenced by g_hook_unref(). 00117 { 00118 g_return_if_fail (hook_list != NULL); 00119 g_return_if_fail (hook_list->is_setup); 00120 g_return_if_fail (hook != NULL); 00121 g_return_if_fail (G_HOOK_IS_UNLINKED (hook)); 00122 00123 if (hook_list->hook_free) 00124 hook_list->hook_free (hook_list, hook); 00125 00126 g_chunk_free (hook, hook_list->hook_memchunk); 00127 }
|
|
||||||||||||
|
Definition at line 451 of file ghook.c. References g_return_val_if_fail, _GHook::hook_id, _GHookList::hooks, _GHook::next, and NULL. Referenced by g_hook_destroy(), and g_source_remove(). 00453 { 00454 GHook *hook; 00455 00456 g_return_val_if_fail (hook_list != NULL, NULL); 00457 g_return_val_if_fail (hook_id > 0, NULL); 00458 00459 hook = hook_list->hooks; 00460 while (hook) 00461 { 00462 if (hook->hook_id == hook_id) 00463 return hook; 00464 hook = hook->next; 00465 } 00466 00467 return NULL; 00468 }
|
|
||||||||||||||||
|
Definition at line 239 of file ghook.c. References G_HOOK_IS_UNLINKED, g_return_if_fail, _GHookList::hooks, _GHookList::is_setup, _GHook::next, NULL, _GHook::prev, and _GHookList::seq_id. Referenced by g_hook_insert_sorted(), and g_hook_prepend(). 00242 { 00243 g_return_if_fail (hook_list != NULL); 00244 g_return_if_fail (hook_list->is_setup); 00245 g_return_if_fail (hook != NULL); 00246 g_return_if_fail (G_HOOK_IS_UNLINKED (hook)); 00247 g_return_if_fail (hook->func != NULL); 00248 00249 hook->hook_id = hook_list->seq_id++; 00250 hook->ref_count = 1; /* counterpart to g_hook_destroy_link */ 00251 00252 if (sibling) 00253 { 00254 if (sibling->prev) 00255 { 00256 hook->prev = sibling->prev; 00257 hook->prev->next = hook; 00258 hook->next = sibling; 00259 sibling->prev = hook; 00260 } 00261 else 00262 { 00263 hook_list->hooks = hook; 00264 hook->next = sibling; 00265 sibling->prev = hook; 00266 } 00267 } 00268 else 00269 { 00270 if (hook_list->hooks) 00271 { 00272 sibling = hook_list->hooks; 00273 while (sibling->next) 00274 sibling = sibling->next; 00275 hook->prev = sibling; 00276 sibling->next = hook; 00277 } 00278 else 00279 hook_list->hooks = hook; 00280 } 00281 }
|
|
||||||||||||||||
|
Definition at line 587 of file ghook.c. References g_hook_insert_before(), G_HOOK_IS_UNLINKED, g_hook_ref(), g_hook_unref(), g_return_if_fail, _GHook::hook_id, _GHookList::hooks, _GHookList::is_setup, _GHook::next, and NULL. Referenced by g_source_add(). 00590 { 00591 GHook *sibling; 00592 00593 g_return_if_fail (hook_list != NULL); 00594 g_return_if_fail (hook_list->is_setup); 00595 g_return_if_fail (hook != NULL); 00596 g_return_if_fail (G_HOOK_IS_UNLINKED (hook)); 00597 g_return_if_fail (hook->func != NULL); 00598 g_return_if_fail (func != NULL); 00599 00600 /* first non-destroyed hook */ 00601 sibling = hook_list->hooks; 00602 while (sibling && !sibling->hook_id) 00603 sibling = sibling->next; 00604 00605 while (sibling) 00606 { 00607 GHook *tmp; 00608 00609 g_hook_ref (hook_list, sibling); 00610 if (func (hook, sibling) <= 0 && sibling->hook_id) 00611 { 00612 g_hook_unref (hook_list, sibling); 00613 break; 00614 } 00615 00616 /* next non-destroyed hook */ 00617 tmp = sibling->next; 00618 while (tmp && !tmp->hook_id) 00619 tmp = tmp->next; 00620 00621 g_hook_unref (hook_list, sibling); 00622 sibling = tmp; 00623 } 00624 00625 g_hook_insert_before (hook_list, sibling, hook); 00626 }
|
|
|
Definition at line 62 of file ghook.c. References FALSE, g_hook_destroy_link(), g_hook_ref(), g_hook_unref(), g_mem_chunk_destroy(), g_return_if_fail, _GHookList::hook_memchunk, _GHookList::hooks, _GHookList::is_setup, _GHook::next, and NULL. 00063 { 00064 g_return_if_fail (hook_list != NULL); 00065 00066 if (hook_list->is_setup) 00067 { 00068 GHook *hook; 00069 00070 hook_list->is_setup = FALSE; 00071 00072 hook = hook_list->hooks; 00073 if (!hook) 00074 { 00075 g_mem_chunk_destroy (hook_list->hook_memchunk); 00076 hook_list->hook_memchunk = NULL; 00077 } 00078 else 00079 do 00080 { 00081 GHook *tmp; 00082 00083 g_hook_ref (hook_list, hook); 00084 g_hook_destroy_link (hook_list, hook); 00085 tmp = hook->next; 00086 g_hook_unref (hook_list, hook); 00087 hook = tmp; 00088 } 00089 while (hook); 00090 } 00091 }
|
|
||||||||||||
|
Definition at line 43 of file ghook.c. References G_ALLOC_AND_FREE, G_HOOKS_PREALLOC, g_mem_chunk_new(), g_return_if_fail, _GHookList::hook_destroy, _GHookList::hook_free, _GHookList::hook_memchunk, _GHookList::hook_size, _GHookList::hooks, _GHookList::is_setup, NULL, _GHookList::seq_id, and TRUE. Referenced by g_source_add(). 00045 { 00046 g_return_if_fail (hook_list != NULL); 00047 g_return_if_fail (hook_size >= sizeof (GHook)); 00048 00049 hook_list->seq_id = 1; 00050 hook_list->hook_size = hook_size; 00051 hook_list->is_setup = TRUE; 00052 hook_list->hooks = NULL; 00053 hook_list->hook_memchunk = g_mem_chunk_new ("GHook Memchunk", 00054 hook_size, 00055 hook_size * G_HOOKS_PREALLOC, 00056 G_ALLOC_AND_FREE); 00057 hook_list->hook_free = NULL; 00058 hook_list->hook_destroy = NULL; 00059 }
|
|
||||||||||||
|
Definition at line 284 of file ghook.c. References _GHook::data, _GHook::flags, _GHook::func, g_hook_first_valid(), G_HOOK_FLAG_IN_CALL, G_HOOK_IN_CALL, g_hook_next_valid(), g_return_if_fail, _GHookList::is_setup, and NULL. 00286 { 00287 GHook *hook; 00288 00289 g_return_if_fail (hook_list != NULL); 00290 g_return_if_fail (hook_list->is_setup); 00291 00292 hook = g_hook_first_valid (hook_list, may_recurse); 00293 while (hook) 00294 { 00295 GHookFunc func; 00296 gboolean was_in_call; 00297 00298 func = (GHookFunc) hook->func; 00299 00300 was_in_call = G_HOOK_IN_CALL (hook); 00301 hook->flags |= G_HOOK_FLAG_IN_CALL; 00302 func (hook->data); 00303 if (!was_in_call) 00304 hook->flags &= ~G_HOOK_FLAG_IN_CALL; 00305 00306 hook = g_hook_next_valid (hook_list, hook, may_recurse); 00307 } 00308 }
|
|
||||||||||||
|
Definition at line 311 of file ghook.c. References _GHook::data, _GHook::flags, _GHook::func, g_hook_destroy_link(), g_hook_first_valid(), G_HOOK_FLAG_IN_CALL, G_HOOK_IN_CALL, g_hook_next_valid(), g_return_if_fail, _GHookList::is_setup, and NULL. 00313 { 00314 GHook *hook; 00315 00316 g_return_if_fail (hook_list != NULL); 00317 g_return_if_fail (hook_list->is_setup); 00318 00319 hook = g_hook_first_valid (hook_list, may_recurse); 00320 while (hook) 00321 { 00322 GHookCheckFunc func; 00323 gboolean was_in_call; 00324 gboolean need_destroy; 00325 00326 func = (GHookCheckFunc) hook->func; 00327 00328 was_in_call = G_HOOK_IN_CALL (hook); 00329 hook->flags |= G_HOOK_FLAG_IN_CALL; 00330 need_destroy = !func (hook->data); 00331 if (!was_in_call) 00332 hook->flags &= ~G_HOOK_FLAG_IN_CALL; 00333 if (need_destroy) 00334 g_hook_destroy_link (hook_list, hook); 00335 00336 hook = g_hook_next_valid (hook_list, hook, may_recurse); 00337 } 00338 }
|
|
||||||||||||||||||||
|
Definition at line 371 of file ghook.c. References _GHook::flags, g_hook_first_valid(), G_HOOK_FLAG_IN_CALL, G_HOOK_IN_CALL, g_hook_next_valid(), g_return_if_fail, _GHookList::is_setup, and NULL. 00375 { 00376 GHook *hook; 00377 00378 g_return_if_fail (hook_list != NULL); 00379 g_return_if_fail (hook_list->is_setup); 00380 g_return_if_fail (marshaller != NULL); 00381 00382 hook = g_hook_first_valid (hook_list, may_recurse); 00383 while (hook) 00384 { 00385 gboolean was_in_call; 00386 00387 was_in_call = G_HOOK_IN_CALL (hook); 00388 hook->flags |= G_HOOK_FLAG_IN_CALL; 00389 marshaller (hook, data); 00390 if (!was_in_call) 00391 hook->flags &= ~G_HOOK_FLAG_IN_CALL; 00392 00393 hook = g_hook_next_valid (hook_list, hook, may_recurse); 00394 } 00395 }
|
|
||||||||||||||||||||
|
Definition at line 341 of file ghook.c. References _GHook::flags, g_hook_destroy_link(), g_hook_first_valid(), G_HOOK_FLAG_IN_CALL, G_HOOK_IN_CALL, g_hook_next_valid(), g_return_if_fail, _GHookList::is_setup, and NULL. 00345 { 00346 GHook *hook; 00347 00348 g_return_if_fail (hook_list != NULL); 00349 g_return_if_fail (hook_list->is_setup); 00350 g_return_if_fail (marshaller != NULL); 00351 00352 hook = g_hook_first_valid (hook_list, may_recurse); 00353 while (hook) 00354 { 00355 gboolean was_in_call; 00356 gboolean need_destroy; 00357 00358 was_in_call = G_HOOK_IN_CALL (hook); 00359 hook->flags |= G_HOOK_FLAG_IN_CALL; 00360 need_destroy = !marshaller (hook, data); 00361 if (!was_in_call) 00362 hook->flags &= ~G_HOOK_FLAG_IN_CALL; 00363 if (need_destroy) 00364 g_hook_destroy_link (hook_list, hook); 00365 00366 hook = g_hook_next_valid (hook_list, hook, may_recurse); 00367 } 00368 }
|
|
||||||||||||||||
|
Definition at line 422 of file ghook.c. References G_HOOK_IN_CALL, G_HOOK_IS_VALID, g_hook_ref(), g_hook_unref(), g_return_val_if_fail, _GHook::next, and NULL. Referenced by g_hook_first_valid(), g_hook_list_invoke(), g_hook_list_invoke_check(), g_hook_list_marshal(), g_hook_list_marshal_check(), and g_main_iterate(). 00425 { 00426 GHook *ohook = hook; 00427 00428 g_return_val_if_fail (hook_list != NULL, NULL); 00429 00430 if (!hook) 00431 return NULL; 00432 00433 hook = hook->next; 00434 while (hook) 00435 { 00436 if (G_HOOK_IS_VALID (hook) && (may_be_in_call || !G_HOOK_IN_CALL (hook))) 00437 { 00438 g_hook_ref (hook_list, hook); 00439 g_hook_unref (hook_list, ohook); 00440 00441 return hook; 00442 } 00443 hook = hook->next; 00444 } 00445 g_hook_unref (hook_list, ohook); 00446 00447 return NULL; 00448 }
|
|
||||||||||||
|
Definition at line 230 of file ghook.c. References g_hook_insert_before(), g_return_if_fail, _GHookList::hooks, and NULL. 00232 { 00233 g_return_if_fail (hook_list != NULL); 00234 00235 g_hook_insert_before (hook_list, hook_list->hooks, hook); 00236 }
|
|
||||||||||||
|
Definition at line 219 of file ghook.c. References g_return_if_fail, NULL, and _GHook::ref_count. Referenced by g_hook_find(), g_hook_first_valid(), g_hook_insert_sorted(), g_hook_list_clear(), g_hook_next_valid(), and g_main_iterate(). 00221 { 00222 g_return_if_fail (hook_list != NULL); 00223 g_return_if_fail (hook != NULL); 00224 g_return_if_fail (hook->ref_count > 0); 00225 00226 hook->ref_count++; 00227 }
|
|
||||||||||||
|
Definition at line 176 of file ghook.c. References FALSE, g_hook_free(), G_HOOK_IN_CALL, g_mem_chunk_destroy(), g_return_if_fail, _GHook::hook_id, _GHookList::hook_memchunk, _GHookList::hooks, _GHookList::is_setup, _GHook::next, NULL, _GHook::prev, _GHook::ref_count, and TRUE. Referenced by g_hook_destroy_link(), g_hook_find(), g_hook_insert_sorted(), g_hook_list_clear(), g_hook_next_valid(), g_main_dispatch(), and g_main_iterate(). 00178 { 00179 g_return_if_fail (hook_list != NULL); 00180 g_return_if_fail (hook_list->hook_memchunk != NULL); 00181 g_return_if_fail (hook != NULL); 00182 g_return_if_fail (hook->ref_count > 0); 00183 00184 hook->ref_count--; 00185 if (!hook->ref_count) 00186 { 00187 g_return_if_fail (hook->hook_id == 0); 00188 g_return_if_fail (!G_HOOK_IN_CALL (hook)); 00189 00190 if (hook->prev) 00191 hook->prev->next = hook->next; 00192 else 00193 hook_list->hooks = hook->next; 00194 if (hook->next) 00195 { 00196 hook->next->prev = hook->prev; 00197 hook->next = NULL; 00198 } 00199 hook->prev = NULL; 00200 00201 if (!hook_list->is_setup) 00202 { 00203 hook_list->is_setup = TRUE; 00204 g_hook_free (hook_list, hook); 00205 hook_list->is_setup = FALSE; 00206 00207 if (!hook_list->hooks) 00208 { 00209 g_mem_chunk_destroy (hook_list->hook_memchunk); 00210 hook_list->hook_memchunk = NULL; 00211 } 00212 } 00213 else 00214 g_hook_free (hook_list, hook); 00215 } 00216 }
|