GLib's main loop은 g_timemout_source_new 및 관련 기능을 사용하여 주기적으로 콜백 기능을 예약 할 수 있습니다. 콜백은 예약 된 간격 후에 false
을 반환 할 때까지 반복적으로 호출됩니다.JavaScript로 동적 재조정 GSource 만들기
이제이 프로세스를 동적 간격으로 수정하려고합니다. 그냥 true
또는 false
대신에 콜백은 다음 번 호출까지 경과해야하는 시간 값을 반환 할 수 있어야합니다.
C에서이 작업을 수행하는 것은 매우 간단합니다. dispatch function의 시간 초과 원본과 만 다른 새로운 GSource 형식을 만들 수 있으며 반환 값은 when setting the next expiration입니다.
불행히도 GNOME 셸 확장을 프로그래밍 중이므로 JavaScript가 붙어 있습니다. 위의 전략을 JavaScript로 포팅하는 주 요점은 the g_source_new function
, new GLib.Source
과 같습니다. 먼저 C에서 sizeof
연산자에 의해 계산되는 struct 유형의 길이를 초기화해야합니다. 자바 스크립트에서이 값을 얻는 방법을 모르겠습니다. 또한 디스패치 기능을 유지하는 데 필요한이 생성자의 두 번째 인수 인 a GSourceFuncs Struct의 생성을 시도하는 것은 오류입니다.
gjs> new imports.gi.GLib.SourceFuncs()
Error: Unable to construct struct type SourceFuncs since it has no default constructor and cannot be allocated directly
어떻게 JavaScript로 새 GSource를 만들 수 있습니까?
기존 소스 유형 또는 [이진 구성 요소 포함]과 관련된 다른 솔루션에 대해서도 열려 있습니다. http : //stackoverflow.com/questions/40919457/including-binary-components-in-a-gnome-shell-extension). – XZS