void call_flush_users(struct call *call)
{
	if (!call)
		return;

	dict_flush(call->users);
}
int mm_platform_init(struct mm *mm, struct dict *sounds)
{
	info("mm_platform_android: init: mm=%p sounds=%p\n", mm, sounds);

	tmr_init(&java.tmr_delay);
	
	jni_create_router(mm);
    
	dict_flush(sounds);

	mediamgr_device_changed(mm);
    
	return 0;
}
static void call_destructor(void *arg)
{
	struct call *call = arg;
	struct le *le;

	info("flowmgr(%p): call(%p): dtor\n", call->fm, call);

	le = call->rrl.head;
	while (le) {
		struct rr_resp *rr = le->data;

		le = le->next;

		rr_cancel(rr);
	}

	list_flush(&call->ghostl);
	list_flush(&call->conf_parts);

	dict_flush(call->users);
	mem_deref(call->users);

	if (call->fm)
		dict_remove(call->fm->calls, call->convid);

	if (call->flows) {
		struct dict *flows = call->flows;

		call->flows = NULL;
		mem_deref(flows);
	}

	mem_deref(call->convid);
	mem_deref(call->sessid);

	call->fm = NULL;

	list_unlink(&call->post_le);
}