void osync_mapping_engine_set_master(OSyncMappingEngine *engine, OSyncMappingEntryEngine *entry) { if (engine->master) osync_entry_engine_unref(engine->master); engine->master = entry; osync_entry_engine_ref(engine->master); }
void osync_mapping_engine_unref(OSyncMappingEngine *engine) { osync_assert(engine); if (g_atomic_int_dec_and_test(&(engine->ref_count))) { if (engine->mapping) osync_mapping_unref(engine->mapping); if (engine->master) osync_entry_engine_unref(engine->master); while (engine->entries) { OSyncMappingEntryEngine *entry = engine->entries->data; osync_entry_engine_unref(entry); engine->entries = g_list_remove(engine->entries, engine->entries->data); } g_free(engine); } }
void osync_sink_engine_unref(OSyncSinkEngine *engine) { osync_assert(engine); if (g_atomic_int_dec_and_test(&(engine->ref_count))) { while (engine->unmapped) { OSyncChange *change = engine->unmapped->data; osync_change_unref(change); engine->unmapped = osync_list_remove(engine->unmapped, engine->unmapped->data); } while (engine->entries) { OSyncMappingEntryEngine *entry = engine->entries->data; osync_entry_engine_unref(entry); engine->entries = osync_list_remove(engine->entries, engine->entries->data); } osync_obj_engine_unref(engine->engine); osync_free(engine); } }