void
XCamSmartAnalyerContext::x3a_calculation_done (XAnalyzer *analyzer, X3aResultList &results)
{
    XCAM_UNUSED (analyzer);
    SmartLock  locker (_result_mutex);
    _results.insert (_results.end (), results.begin (), results.end ());
}
XCamReturn
X3aAnalyzeTuner::post_3a_analyze (X3aResultList &results)
{
    XCamReturn ret = XCAM_RETURN_NO_ERROR;

    XCAM_ASSERT (_analyzer.ptr ());
    ret = _analyzer->push_3a_stats (_stats);
    _stats.release ();

    results.insert (results.end (), _results.begin (), _results.end ());
    _results.clear ();

    X3aCiqTuningHandlerList::iterator i_handler = _handlers.begin ();
    for (; i_handler != _handlers.end ();  ++i_handler)
    {
        (*i_handler)->analyze (results);
    }

    return ret;
}