Ejemplo n.º 1
0
void mm_camera_poll_threads_deinit(mm_camera_obj_t * my_obj)
{
    int i;
    mm_camera_poll_thread_t *poll_cb;

    for(i = 0; i < MM_CAMERA_POLL_THRAED_MAX; i++) {
        poll_cb = &my_obj->poll_threads[i];
        if(poll_cb->data.used)
            mm_camera_poll_stop(my_obj, poll_cb);
        pthread_mutex_destroy(&poll_cb->mutex);
        pthread_cond_destroy(&poll_cb->cond_v);
        memset(poll_cb, 0, sizeof(mm_camera_poll_thread_t));
    }
}
Ejemplo n.º 2
0
int mm_camera_poll_thread_release(mm_camera_obj_t * my_obj, int ch_type)
{
    int rc = MM_CAMERA_OK;
    mm_camera_poll_thread_t *poll_cb = &my_obj->poll_threads[ch_type];
    if(MM_CAMERA_POLL_TASK_STATE_MAX == poll_cb->data.state) {
        CDBG("%s: err, poll thread of channel % is not running. cam_id=%d\n",
             __func__, ch_type, my_obj->my_id);
        return -MM_CAMERA_E_INVALID_OPERATION;
    }
    rc = mm_camera_poll_stop(my_obj, poll_cb);

    if(poll_cb->data.pfds[0]) {
        close(poll_cb->data.pfds[0]);
    }
    if(poll_cb->data.pfds[1]) {
        close(poll_cb->data.pfds[1]);
    }
    memset(&poll_cb->data, 0, sizeof(poll_cb->data));
    return MM_CAMERA_OK;
}