/** * @return a layer index used for Z-axis layering. */ double CPcbWire::layerIndex() { if ( pcb() != NULL && pcb()->structure() != NULL ) { CPcbStructure* structure = pcb()->structure(); int layers =structure->layers(); return layers-layer()->index(); } return 0; }
void PreparePurchase(const StringVec &products, Callback done_cb, PurchasesInterface::ProductCB product_cb) { static jmethodID mid = CheckNotNull (jni->env->GetMethodID(jni->purchases_class, "queryPurchase", "(Ljava/util/ArrayList;Lcom/lucidfusionlabs/core/NativeCallback;Lcom/lucidfusionlabs/billing/NativeProductCB;)Z")); LocalJNIObject p(jni->env, JNI::ToJStringArrayList(jni->env, products)); LocalJNIObject dcb(jni->env, done_cb ? JNI::ToNativeCallback(jni->env, move(done_cb)) : nullptr); LocalJNIObject pcb(jni->env, product_cb ? ToNativeProductCB(jni->env, move(product_cb)) : nullptr); jni->env->CallBooleanMethod(impl.v, mid, p.v, dcb.v, pcb.v); }
/********************************************************************* * * WM__ForEachDesc */ void WM__ForEachDesc(WM_HWIN hWin, WM_tfForEach * pcb, void * pData) { WM_HWIN hChild; WM_Obj* pChild; WM_Obj* pWin; pWin = WM_H2P(hWin); for (hChild = pWin->hFirstChild; hChild; hChild = pChild->hNext) { pChild = WM_H2P(hChild); pcb(hChild, pData); WM_ForEachDesc(hChild, pcb, pData); } }
/** * @brief start routing */ void QAutoRouter::start() { if ( pcb() != NULL ) { int idx = preferences->routerCombo->currentIndex(); if ( idx >= 0 ) { QString filename = preferences->routerCombo->itemData(idx).toString(); mPluginLoader.setFileName(filename); if ( mPluginLoader.load() ) { QObject* plugin = mPluginLoader.instance(); if ( plugin != NULL ) { ui->actionStart->setEnabled(false); ui->actionStop->setEnabled(true); mAutoRouter = qobject_cast<CPluginInterface *>(plugin); if (autorouter() != NULL) { QEventLoop loop; ui->actionStart->setEnabled(false); autorouter()->start(pcb()); while ( autorouter() != NULL && autorouter()->exec() ) { loop.processEvents(); } QMessageBox::information(this,tr("Routing Complete"),tr("Routing Completed. Total time: ")+autorouter()->elapsed()); } mAutoRouter=NULL; ui->actionStart->setEnabled(true); ui->actionStop->setEnabled(false); } } } } else { emit fault(tr("PCB is NULL")); } }
status_t QCameraStream_Rdi::processRdiFrame( mm_camera_ch_data_buf_t *frame) { ALOGV("%s",__func__); int err = 0; int msgType = 0; int i; camera_memory_t *data = NULL; Mutex::Autolock lock(mStopCallbackLock); if(!mActive) { ALOGD("RDI Streaming Stopped. Returning callback"); return NO_ERROR; } if(mHalCamCtrl==NULL) { ALOGE("%s: X: HAL control object not set",__func__); /*Call buf done*/ return BAD_VALUE; } mHalCamCtrl->mRdiMemoryLock.lock(); mNotifyBuffer[frame->def.idx] = *frame; mHalCamCtrl->mRdiMemoryLock.unlock(); mHalCamCtrl->mCallbackLock.lock(); camera_data_callback pcb = mHalCamCtrl->mDataCb; mHalCamCtrl->mCallbackLock.unlock(); ALOGD("Message enabled = 0x%x", mHalCamCtrl->mMsgEnabled); mHalCamCtrl->dumpFrameToFile(frame->def.frame, HAL_DUMP_FRM_RDI); #ifdef USE_ION struct ion_flush_data cache_inv_data; int ion_fd; cache_inv_data.vaddr = (void *)frame->def.frame->buffer; cache_inv_data.fd = frame->def.frame->fd; cache_inv_data.handle = frame->def.frame->fd_data.handle; cache_inv_data.length = frame->def.frame->ion_alloc.len; ion_fd = frame->def.frame->ion_dev_fd; if (mHalCamCtrl->cache_ops(ion_fd, &cache_inv_data, ION_IOC_CLEAN_CACHES) < 0) ALOGE("%s: Cache clean for RDI buffer %p fd = %d failed", __func__, cache_inv_data.vaddr, cache_inv_data.fd); #endif if (pcb != NULL) { //Sending rdi callback if corresponding Msgs are enabled if(mHalCamCtrl->mMsgEnabled & CAMERA_MSG_PREVIEW_FRAME) { msgType |= CAMERA_MSG_PREVIEW_FRAME; data = mHalCamCtrl->mRdiMemory.camera_memory[frame->def.idx]; } else { data = NULL; } if(msgType) { mStopCallbackLock.unlock(); if(mActive) pcb(msgType, data, 0, NULL, mHalCamCtrl->mCallbackCookie); } ALOGD("end of cb"); } if(MM_CAMERA_OK != cam_evt_buf_done(mCameraId, &mNotifyBuffer[frame->def.idx])) { ALOGE("BUF DONE FAILED"); } return NO_ERROR; }
CPcbLayer* CPcbWire::layer() { if ( pcb() != NULL && pcb()->structure() != NULL ) return pcb()->structure()->layer(layerRef()); return NULL; }
void KICAD_MANAGER_FRAME::OnImportEagleFiles( wxCommandEvent& event ) { // Close other windows. if( !Kiway().PlayersClose( false ) ) return; wxString title = _( "Import Eagle Project Files" ); int style = wxFD_OPEN | wxFD_FILE_MUST_EXIST; wxString default_dir = GetMruPath(); ClearMsg(); wxFileDialog schdlg( this, title, default_dir, wxEmptyString, EagleFilesWildcard(), style ); if( schdlg.ShowModal() == wxID_CANCEL ) return; wxFileName sch( schdlg.GetPath() ); sch.SetExt( SchematicFileExtension ); wxFileName pro = sch; pro.SetExt( ProjectFileExtension ); wxString protitle = _( "KiCad Project Destination" ); // Don't use wxFileDialog here. On GTK builds, the default path is returned unless a // file is actually selected. wxDirDialog prodlg( this, protitle, pro.GetPath(), wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST ); if( prodlg.ShowModal() == wxID_CANCEL ) return; pro.SetPath( prodlg.GetPath() ); // Check if the project directory is empty wxDir directory( pro.GetPath() ); if( directory.HasFiles() ) { wxString msg = _( "The selected directory is not empty. We recommend you " "create projects in their own clean directory.\n\nDo you " "want to create a new empty directory for the project?" ); KIDIALOG dlg( this, msg, _( "Confirmation" ), wxYES_NO | wxICON_WARNING ); dlg.DoNotShowCheckbox( __FILE__, __LINE__ ); if( dlg.ShowModal() == wxID_YES ) { // Append a new directory with the same name of the project file // and try to create it pro.AppendDir( pro.GetName() ); if( !wxMkdir( pro.GetPath() ) ) // There was a problem, undo pro.RemoveLastDir(); } } wxFileName pcb( sch ); pro.SetExt( ProjectFileExtension ); // enforce extension pcb.SetExt( LegacyPcbFileExtension ); // enforce extension if( !pro.IsAbsolute() ) pro.MakeAbsolute(); SetProjectFileName( pro.GetFullPath() ); wxString prj_filename = GetProjectFileName(); if( sch.FileExists() ) { KIWAY_PLAYER* schframe = Kiway().Player( FRAME_SCH, false ); if( !schframe ) { try // SCH frame was not available, try to start it { schframe = Kiway().Player( FRAME_SCH, true ); } catch( const IO_ERROR& err ) { wxMessageBox( _( "Eeschema failed to load:\n" ) + err.What(), _( "KiCad Error" ), wxOK | wxICON_ERROR, this ); return; } } std::string packet = StrPrintf( "%d\n%s", SCH_IO_MGR::SCH_EAGLE, TO_UTF8( sch.GetFullPath() ) ); schframe->Kiway().ExpressMail( FRAME_SCH, MAIL_IMPORT_FILE, packet, this ); if( !schframe->IsShown() ) // the frame exists, (created by the dialog field editor) // but no project loaded. { schframe->Show( true ); } if( schframe->IsIconized() ) schframe->Iconize( false ); schframe->Raise(); } if( pcb.FileExists() ) { KIWAY_PLAYER* pcbframe = Kiway().Player( FRAME_PCB, false ); if( !pcbframe ) { try // PCB frame was not available, try to start it { pcbframe = Kiway().Player( FRAME_PCB, true ); } catch( const IO_ERROR& err ) { wxMessageBox( _( "Pcbnew failed to load:\n" ) + err.What(), _( "KiCad Error" ), wxOK | wxICON_ERROR, this ); return; } } // a pcb frame can be already existing, but not yet used. // this is the case when running the footprint editor, or the footprint viewer first // if the frame is not visible, the board is not yet loaded if( !pcbframe->IsVisible() ) { pcbframe->Show( true ); } std::string packet = StrPrintf( "%d\n%s", IO_MGR::EAGLE, TO_UTF8( pcb.GetFullPath() ) ); pcbframe->Kiway().ExpressMail( FRAME_PCB, MAIL_IMPORT_FILE, packet, this ); // On Windows, Raise() does not bring the window on screen, when iconized if( pcbframe->IsIconized() ) pcbframe->Iconize( false ); pcbframe->Raise(); } ReCreateTreePrj(); m_active_project = true; }
CPcbNet* CPcbPlane::net() { return pcb()->network()->net(netRef()); }
status_t QCameraStream_preview::processPreviewFrame(mm_camera_ch_data_buf_t *frame) { ALOGV("%s",__func__); int err = 0; int msgType = 0; camera_memory_t *data = NULL; camera_frame_metadata_t *metadata = NULL; Mutex::Autolock lock(mStopCallbackLock); if(!mActive) { ALOGE("Preview Stopped. Returning callback"); return NO_ERROR; } if(mHalCamCtrl==NULL) { ALOGE("%s: X: HAL control object not set",__func__); /*Call buf done*/ return BAD_VALUE; } mHalCamCtrl->mCallbackLock.lock(); camera_data_timestamp_callback rcb = mHalCamCtrl->mDataCbTimestamp; void *rdata = mHalCamCtrl->mCallbackCookie; mHalCamCtrl->mCallbackLock.unlock(); if (UNLIKELY(mHalCamCtrl->mDebugFps)) { mHalCamCtrl->debugShowPreviewFPS(); } //dumpFrameToFile(frame->def.frame); mHalCamCtrl->dumpFrameToFile(frame->def.frame, HAL_DUMP_FRM_PREVIEW); nsecs_t timeStamp = systemTime(); mHalCamCtrl->mPreviewMemoryLock.lock(); mNotifyBuffer[frame->def.idx] = *frame; // mzhu fix me, need to check meta data also. ALOGI("Enqueue buf handle %p\n", mHalCamCtrl->mPreviewMemory.buffer_handle[frame->def.idx]); ALOGD("%s: camera call genlock_unlock", __FUNCTION__); if (BUFFER_LOCKED == mHalCamCtrl->mPreviewMemory.local_flag[frame->def.idx]) { if (GENLOCK_FAILURE == genlock_unlock_buffer((native_handle_t*) (*mHalCamCtrl->mPreviewMemory.buffer_handle[frame->def.idx]))) { ALOGE("%s: genlock_unlock_buffer failed", __FUNCTION__); mHalCamCtrl->mPreviewMemoryLock.unlock(); return -EINVAL; } else { mHalCamCtrl->mPreviewMemory.local_flag[frame->def.idx] = BUFFER_UNLOCKED; } } else { ALOGE("%s: buffer to be enqueued is not locked", __FUNCTION__); mHalCamCtrl->mPreviewMemoryLock.unlock(); return -EINVAL; } err = this->mPreviewWindow->enqueue_buffer(this->mPreviewWindow, (buffer_handle_t *)mHalCamCtrl->mPreviewMemory.buffer_handle[frame->def.idx]); if(err != 0) { ALOGE("%s: enqueue_buffer failed, err = %d", __func__, err); } buffer_handle_t *buffer_handle = NULL; int tmp_stride = 0; err = this->mPreviewWindow->dequeue_buffer(this->mPreviewWindow, &buffer_handle, &tmp_stride); if (err == NO_ERROR && buffer_handle != NULL) { err = this->mPreviewWindow->lock_buffer(this->mPreviewWindow, buffer_handle); ALOGD("%s: camera call genlock_lock", __FUNCTION__); if (GENLOCK_FAILURE == genlock_lock_buffer((native_handle_t*)(*buffer_handle), GENLOCK_WRITE_LOCK, GENLOCK_MAX_TIMEOUT)) { ALOGE("%s: genlock_lock_buffer(WRITE) failed", __FUNCTION__); mHalCamCtrl->mPreviewMemoryLock.unlock(); return -EINVAL; } for(int i = 0; i < mHalCamCtrl->mPreviewMemory.buffer_count; i++) { ALOGD("h1: %p h2: %p\n", mHalCamCtrl->mPreviewMemory.buffer_handle[i], buffer_handle); if(mHalCamCtrl->mPreviewMemory.buffer_handle[i] == buffer_handle) { mm_camera_ch_data_buf_t tmp_frame; mHalCamCtrl->mPreviewMemory.local_flag[i] = BUFFER_LOCKED; if(MM_CAMERA_OK != cam_evt_buf_done(mCameraId, &mNotifyBuffer[i])) { ALOGD("BUF DONE FAILED"); mHalCamCtrl->mPreviewMemoryLock.unlock(); return BAD_VALUE; } break; } } } else ALOGE("%s: error in dequeue_buffer, enqueue_buffer idx = %d, no free buffer now", __func__, frame->def.idx); /* Save the last displayed frame. We'll be using it to fill the gap between when preview stops and postview start during snapshot.*/ mLastQueuedFrame = &(mDisplayStreamBuf.frame[frame->def.idx]); mHalCamCtrl->mPreviewMemoryLock.unlock(); mHalCamCtrl->mCallbackLock.lock(); camera_data_callback pcb = mHalCamCtrl->mDataCb; mHalCamCtrl->mCallbackLock.unlock(); ALOGD("Message enabled = 0x%x", mHalCamCtrl->mMsgEnabled); if (pcb != NULL) { //Sending preview callback if corresponding Msgs are enabled if(mHalCamCtrl->mMsgEnabled & CAMERA_MSG_PREVIEW_FRAME) { msgType |= CAMERA_MSG_PREVIEW_FRAME; data = mHalCamCtrl->mPreviewMemory.camera_memory[frame->def.idx];//mPreviewHeap->mBuffers[frame->def.idx]; } else { data = NULL; } if(msgType) { mStopCallbackLock.unlock(); pcb(msgType, data, 0, metadata, mHalCamCtrl->mCallbackCookie); } ALOGD("end of cb"); } if(rcb != NULL) { if (mHalCamCtrl->mStoreMetaDataInFrame) { mStopCallbackLock.unlock(); if(mHalCamCtrl->mStartRecording == true &&( mHalCamCtrl->mMsgEnabled & CAMERA_MSG_VIDEO_FRAME)) rcb(timeStamp, CAMERA_MSG_VIDEO_FRAME, mHalCamCtrl->mRecordingMemory.metadata_memory[frame->def.idx], 0, mHalCamCtrl->mCallbackCookie); } else { if(mHalCamCtrl->mStartRecording == true &&( mHalCamCtrl->mMsgEnabled & CAMERA_MSG_VIDEO_FRAME)) { mStopCallbackLock.unlock(); rcb(timeStamp, CAMERA_MSG_VIDEO_FRAME, mHalCamCtrl->mPreviewMemory.camera_memory[frame->def.idx], 0, mHalCamCtrl->mCallbackCookie); } } } /* Save the last displayed frame. We'll be using it to fill the gap between when preview stops and postview start during snapshot.*/ //mLastQueuedFrame = frame->def.frame; /* if(MM_CAMERA_OK != cam_evt_buf_done(mCameraId, frame)) { ALOGE("BUF DONE FAILED"); return BAD_VALUE; } */ return NO_ERROR; }
void QCameraStream_preview::notifyROIEvent(fd_roi_t roi) { switch (roi.type) { case FD_ROI_TYPE_HEADER: { mDisplayLock.lock(); mNumFDRcvd = 0; memset(mHalCamCtrl->mFace, 0, sizeof(mHalCamCtrl->mFace)); mHalCamCtrl->mMetadata.faces = mHalCamCtrl->mFace; mHalCamCtrl->mMetadata.number_of_faces = roi.d.hdr.num_face_detected; if(mHalCamCtrl->mMetadata.number_of_faces > MAX_ROI) mHalCamCtrl->mMetadata.number_of_faces = MAX_ROI; mDisplayLock.unlock(); if (mHalCamCtrl->mMetadata.number_of_faces == 0) { // Clear previous faces mHalCamCtrl->mCallbackLock.lock(); camera_data_callback pcb = mHalCamCtrl->mDataCb; mHalCamCtrl->mCallbackLock.unlock(); if (pcb && (mHalCamCtrl->mMsgEnabled & CAMERA_MSG_PREVIEW_METADATA)){ ALOGE("%s: Face detection RIO callback", __func__); pcb(CAMERA_MSG_PREVIEW_METADATA, NULL, 0, &mHalCamCtrl->mMetadata, mHalCamCtrl->mCallbackCookie); } } } break; case FD_ROI_TYPE_DATA: { mDisplayLock.lock(); int idx = roi.d.data.idx; if (idx >= mHalCamCtrl->mMetadata.number_of_faces) { mDisplayLock.unlock(); ALOGE("%s: idx %d out of boundary %d", __func__, idx, mHalCamCtrl->mMetadata.number_of_faces); break; } mHalCamCtrl->mFace[idx].id = roi.d.data.face.id; mHalCamCtrl->mFace[idx].score = roi.d.data.face.score / 10; // keep within range 0~100 // top mHalCamCtrl->mFace[idx].rect[0] = roi.d.data.face.face_boundary.x*2000/mHalCamCtrl->mDimension.display_width - 1000; //right mHalCamCtrl->mFace[idx].rect[1] = roi.d.data.face.face_boundary.y*2000/mHalCamCtrl->mDimension.display_height - 1000; //bottom mHalCamCtrl->mFace[idx].rect[2] = mHalCamCtrl->mFace[idx].rect[0] + roi.d.data.face.face_boundary.dx*2000/mHalCamCtrl->mDimension.display_width; //left mHalCamCtrl->mFace[idx].rect[3] = mHalCamCtrl->mFace[idx].rect[1] + roi.d.data.face.face_boundary.dy*2000/mHalCamCtrl->mDimension.display_height; // Center of left eye mHalCamCtrl->mFace[idx].left_eye[0] = roi.d.data.face.left_eye_center[0]*2000/mHalCamCtrl->mDimension.display_width - 1000; mHalCamCtrl->mFace[idx].left_eye[1] = roi.d.data.face.left_eye_center[1]*2000/mHalCamCtrl->mDimension.display_height - 1000; // Center of right eye mHalCamCtrl->mFace[idx].right_eye[0] = roi.d.data.face.right_eye_center[0]*2000/mHalCamCtrl->mDimension.display_width - 1000; mHalCamCtrl->mFace[idx].right_eye[1] = roi.d.data.face.right_eye_center[1]*2000/mHalCamCtrl->mDimension.display_height - 1000; // Center of mouth mHalCamCtrl->mFace[idx].mouth[0] = roi.d.data.face.mouth_center[0]*2000/mHalCamCtrl->mDimension.display_width - 1000; mHalCamCtrl->mFace[idx].mouth[1] = roi.d.data.face.mouth_center[1]*2000/mHalCamCtrl->mDimension.display_height - 1000; mHalCamCtrl->mFace[idx].smile_degree = roi.d.data.face.smile_degree; mHalCamCtrl->mFace[idx].smile_score = roi.d.data.face.smile_confidence; mHalCamCtrl->mFace[idx].blink_detected = roi.d.data.face.blink_detected; mHalCamCtrl->mFace[idx].face_recognised = roi.d.data.face.is_face_recognised; mHalCamCtrl->mFace[idx].gaze_angle = roi.d.data.face.gaze_angle; /* newly added */ // upscale by 2 to recover from demaen downscaling mHalCamCtrl->mFace[idx].updown_dir = roi.d.data.face.updown_dir*2; mHalCamCtrl->mFace[idx].leftright_dir = roi.d.data.face.leftright_dir*2; mHalCamCtrl->mFace[idx].roll_dir = roi.d.data.face.roll_dir*2; mHalCamCtrl->mFace[idx].leye_blink = roi.d.data.face.left_blink; mHalCamCtrl->mFace[idx].reye_blink = roi.d.data.face.right_blink; mHalCamCtrl->mFace[idx].left_right_gaze = roi.d.data.face.left_right_gaze; mHalCamCtrl->mFace[idx].top_bottom_gaze = roi.d.data.face.top_bottom_gaze; ALOGE("%s: Face(%d, %d, %d, %d), leftEye(%d, %d), rightEye(%d, %d), mouth(%d, %d), smile(%d, %d), blinked(%d)", __func__, mHalCamCtrl->mFace[idx].rect[0], mHalCamCtrl->mFace[idx].rect[1], mHalCamCtrl->mFace[idx].rect[2], mHalCamCtrl->mFace[idx].rect[3], mHalCamCtrl->mFace[idx].left_eye[0], mHalCamCtrl->mFace[idx].left_eye[1], mHalCamCtrl->mFace[idx].right_eye[0], mHalCamCtrl->mFace[idx].right_eye[1], mHalCamCtrl->mFace[idx].mouth[0], mHalCamCtrl->mFace[idx].mouth[1], roi.d.data.face.smile_degree, roi.d.data.face.smile_confidence, roi.d.data.face.blink_detected); mNumFDRcvd++; mDisplayLock.unlock(); if (mNumFDRcvd == mHalCamCtrl->mMetadata.number_of_faces) { mHalCamCtrl->mCallbackLock.lock(); camera_data_callback pcb = mHalCamCtrl->mDataCb; mHalCamCtrl->mCallbackLock.unlock(); if (pcb && (mHalCamCtrl->mMsgEnabled & CAMERA_MSG_PREVIEW_METADATA)){ ALOGE("%s: Face detection RIO callback with %d faces detected (score=%d)", __func__, mNumFDRcvd, mHalCamCtrl->mFace[idx].score); pcb(CAMERA_MSG_PREVIEW_METADATA, NULL, 0, &mHalCamCtrl->mMetadata, mHalCamCtrl->mCallbackCookie); } } } break; } }