dt_camctl_t *dt_camctl_new() { dt_camctl_t *camctl=g_malloc(sizeof(dt_camctl_t)); memset(camctl,0,sizeof(dt_camctl_t)); dt_print(DT_DEBUG_CAMCTL,"[camera_control] creating new context %lx\n",(unsigned long int)camctl); // Initialize gphoto2 context and setup dispatch callbacks camctl->gpcontext = gp_context_new(); gp_context_set_idle_func( camctl->gpcontext , (GPContextIdleFunc)_idle_func_dispatch, camctl ); gp_context_set_status_func( camctl->gpcontext , (GPContextStatusFunc)_status_func_dispatch, camctl ); gp_context_set_error_func( camctl->gpcontext , (GPContextErrorFunc)_error_func_dispatch, camctl ); gp_context_set_message_func( camctl->gpcontext , (GPContextMessageFunc)_message_func_dispatch, camctl ); // Load all camera drivers we know... gp_abilities_list_new( &camctl->gpcams ); gp_abilities_list_load( camctl->gpcams, camctl->gpcontext ); dt_print(DT_DEBUG_CAMCTL,"[camera_control] loaded %d camera drivers.\n", gp_abilities_list_count( camctl->gpcams ) ); dt_pthread_mutex_init(&camctl->lock, NULL); // Let's detect cameras connexted dt_camctl_detect_cameras(camctl); return camctl; }
KKameraConfig::KKameraConfig(QWidget *parent, const char *name, const QStringList &) : KCModule(KKameraConfigFactory::instance(), parent, name) { m_devicePopup = new KPopupMenu(this); m_actions = new KActionCollection(this); m_config = new KSimpleConfig(KProtocolInfo::config("camera")); m_context = gp_context_new(); if (m_context) { // Register the callback functions gp_context_set_cancel_func(m_context, cbGPCancel, this); gp_context_set_idle_func(m_context, cbGPIdle, this); displayGPSuccessDialogue(); // load existing configuration load(); } else { displayGPFailureDialogue(); } // store instance for frontend_prompt m_instance = this; }