2
CGDisplayStream
을 사용하는 Mac 응용 프로그램의 화면 캡처를 구현하고 있습니다. 질문과 비슷하지만 here과 비슷하지만 Swift에서 질문했습니다. ... 때 일어나고있는 것 같다 무엇대기열과 함께 CGDisplayStream 사용
override func viewDidAppear() {
super.viewDidAppear()
let backgroundQueue = DispatchQueue(label: "com.app.queue",
qos: .background,
target: nil)
let displayStream = CGDisplayStream(dispatchQueueDisplay: 0, outputWidth: 100, outputHeight: 100,pixelFormat: Int32(k32BGRAPixelFormat), properties: nil, queue: backgroundQueue) { (status, code, iosurface, update) in
switch(status){
case .frameBlank:
print("FrameBlank")
break;
case .frameIdle:
print("FrameIdle")
break;
case .frameComplete:
print("FrameComplete")
break;
case .stopped:
print("Stopped")
break;
}
self.update()
}
displayStream?.start()
}
func update(){
print("WORKING")
}
큐 프로세스가 제대로 초기화되지 않는 것입니다,하지만 난 모르겠어요 : 아래
내 응용 프로그램의 하나의 ViewController에서 내가 가지고있는 코드입니다 앱이 시작되면self.update()
이 한 번만 호출되지만 한 번만 호출됩니다. 디스플레이 스트림이 제대로 시작되었다는 것을 감안할 때이 함수가 반복적으로 호출 되길 기대하지만 한 번만 호출됩니다.
누구든지 아이디어가 있습니까? 큐를 올바르게 설정하지 않습니까?
감사합니다.
그래, 그게 정확히 문제 였어. 고맙습니다! – narner
잠시 동안 나를 괴롭힌 비슷한 증상을 가진 또 다른 잡아 : 처리기 콜백은 입력 디스플레이가 변경 될 때만 발생합니다. 따라서 나와 같은 사람이라면 대부분의 작업을 외부 모니터에서 수행 할 수 있습니다. 입력 디스플레이로 선택한 디스플레이로 마우스를 움직여야 콜백이 시작됩니다. –