From: <dg...@su...> - 2009-02-03 19:36:47
|
Author: Graham Cobb Date: Tue Feb 3 20:35:06 2009 New Revision: 5256 URL: http://www.opensync.org/changeset/5256 Log: Bug #1052: add refs in obj_engine and sink_engine Modified: trunk/opensync/engine/opensync_obj_engine.c trunk/opensync/engine/opensync_sink_engine.c Modified: trunk/opensync/engine/opensync_obj_engine.c ============================================================================== --- trunk/opensync/engine/opensync_obj_engine.c Tue Feb 3 20:26:06 2009 (r5255) +++ trunk/opensync/engine/opensync_obj_engine.c Tue Feb 3 20:35:06 2009 (r5256) @@ -118,6 +118,7 @@ } else osync_trace(TRACE_INTERNAL, "Not yet: %i", osync_bitcount(engine->sink_errors | engine->sink_connects)); + osync_sink_engine_unref(sinkengine); osync_trace(TRACE_EXIT, "%s", __func__); } @@ -148,6 +149,7 @@ } else osync_trace(TRACE_INTERNAL, "Not yet: %i", osync_bitcount(engine->sink_errors | engine->sink_connect_done)); + osync_sink_engine_unref(sinkengine); osync_trace(TRACE_EXIT, "%s", __func__); } @@ -191,6 +193,8 @@ _osync_obj_engine_generate_event_disconnected(engine, error); + osync_sink_engine_unref(sinkengine); + osync_trace(TRACE_EXIT, "%s", __func__); } @@ -322,9 +326,12 @@ static void _osync_obj_engine_read_ignored_callback(OSyncClientProxy *proxy, void *userdata, OSyncError *error) { + OSyncSinkEngine *sinkengine = userdata; + OSyncObjEngine *engine = sinkengine->engine; /* TODO: Share _generate_read_event fucntion with _osync_obj_engine_read_callback? To report errors .. and handle _timeout problems of _read_ignored call. */ + osync_sink_engine_unref(sinkengine); } @@ -356,6 +363,7 @@ } else osync_trace(TRACE_INTERNAL, "Not yet: %i", osync_bitcount(engine->sink_errors | engine->sink_get_changes)); + osync_sink_engine_unref(sinkengine); osync_trace(TRACE_EXIT, "%s", __func__); } @@ -582,6 +590,7 @@ } else osync_trace(TRACE_INTERNAL, "Not yet: %i", osync_bitcount(engine->sink_errors | engine->sink_sync_done)); + osync_sink_engine_unref(sinkengine); osync_trace(TRACE_EXIT, "%s", __func__); } @@ -920,6 +929,7 @@ if (!osync_client_proxy_connect(sinkengine->proxy, _osync_obj_engine_connect_callback, sinkengine, engine->objtype, engine->slowsync, error)) goto error; + osync_sink_engine_ref(sinkengine); // Note that connect callback has a reference } break; case OSYNC_ENGINE_COMMAND_CONNECT_DONE: @@ -928,6 +938,7 @@ if (!osync_client_proxy_connect_done(sinkengine->proxy, _osync_obj_engine_connect_done_callback, sinkengine, engine->objtype, error)) goto error; + osync_sink_engine_ref(sinkengine); // Note that connect_done callback has a reference } break; case OSYNC_ENGINE_COMMAND_READ: @@ -943,6 +954,7 @@ if (!osync_client_proxy_read(sinkengine->proxy, _osync_obj_engine_read_ignored_callback, sinkengine, change, error)) goto error; + osync_sink_engine_ref(sinkengine); // Note that read_ignored callback has a reference } } @@ -974,6 +986,7 @@ if (!osync_client_proxy_get_changes(sinkengine->proxy, _osync_obj_engine_read_callback, sinkengine, engine->objtype, engine->slowsync, error)) goto error; + osync_sink_engine_ref(sinkengine); // Note that read callback has a reference } break; @@ -1080,6 +1093,7 @@ if (!osync_client_proxy_sync_done(sinkengine->proxy, _osync_obj_engine_sync_done_callback, sinkengine, engine->objtype, error)) goto error; + osync_sink_engine_ref(sinkengine); // Note that sync_done callback has a reference } break; case OSYNC_ENGINE_COMMAND_DISCONNECT:; @@ -1096,6 +1110,7 @@ if (!osync_client_proxy_disconnect(sinkengine->proxy, _osync_obj_engine_disconnect_callback, sinkengine, engine->objtype, error)) goto error; + osync_sink_engine_ref(sinkengine); // Note that disconnect callback has a reference } /* If no client needs to be disconnected, we MUST NOT expected any Modified: trunk/opensync/engine/opensync_sink_engine.c ============================================================================== --- trunk/opensync/engine/opensync_sink_engine.c Tue Feb 3 20:26:06 2009 (r5255) +++ trunk/opensync/engine/opensync_sink_engine.c Tue Feb 3 20:35:06 2009 (r5256) @@ -55,6 +55,7 @@ sinkengine->proxy = proxy; sinkengine->engine = objengine; + osync_obj_engine_ref(objengine); osync_trace(TRACE_EXIT, "%s: %p", __func__, sinkengine); return sinkengine; @@ -92,6 +93,8 @@ engine->entries = osync_list_remove(engine->entries, engine->entries->data); } + osync_obj_engine_unref(engine->engine); + osync_free(engine); } } |