From: <dg...@su...> - 2009-01-26 00:25:12
|
Author: Graham Cobb Date: Mon Jan 26 01:23:47 2009 New Revision: 5233 URL: http://www.opensync.org/changeset/5233 Log: Bug #1052: add refs in obj_engine and sink_engine Modified: branches/timeout/opensync/engine/opensync_obj_engine.c branches/timeout/opensync/engine/opensync_sink_engine.c Modified: branches/timeout/opensync/engine/opensync_obj_engine.c ============================================================================== --- branches/timeout/opensync/engine/opensync_obj_engine.c Sun Jan 25 14:47:52 2009 (r5232) +++ branches/timeout/opensync/engine/opensync_obj_engine.c Mon Jan 26 01:23:47 2009 (r5233) @@ -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__); } @@ -586,6 +594,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__); } @@ -935,6 +944,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: @@ -946,6 +956,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: @@ -964,6 +975,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 } } @@ -998,6 +1010,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; @@ -1107,6 +1120,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:; @@ -1126,6 +1140,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: branches/timeout/opensync/engine/opensync_sink_engine.c ============================================================================== --- branches/timeout/opensync/engine/opensync_sink_engine.c Sun Jan 25 14:47:52 2009 (r5232) +++ branches/timeout/opensync/engine/opensync_sink_engine.c Mon Jan 26 01:23:47 2009 (r5233) @@ -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); } } |