displaylink.mm 878 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include "displaylink.h"
  2. #include <CoreVideo/CoreVideo.h>
  3. #include <SDL.h>
  4. namespace{
  5. CVDisplayLinkRef displayLink;
  6. CVReturn displayLinkOutputCallback(
  7. CVDisplayLinkRef displayLink,
  8. const CVTimeStamp *inNow,
  9. const CVTimeStamp *inOutputTime,
  10. CVOptionFlags flagsIn,
  11. CVOptionFlags *flagsOut,
  12. void *displayLinkContext)
  13. {
  14. SDL_UserEvent uevent{};
  15. uevent.type=SDL_USEREVENT;
  16. uevent.code=2;
  17. if( SDL_PeepEvents( (SDL_Event*)&uevent,1,SDL_ADDEVENT,SDL_FIRSTEVENT,SDL_LASTEVENT )!=1 ){
  18. }
  19. return kCVReturnSuccess;
  20. }
  21. }
  22. namespace bbDisplayLink{
  23. void init(){
  24. CVDisplayLinkCreateWithActiveCGDisplays(&displayLink);
  25. CVDisplayLinkSetOutputCallback(displayLink, displayLinkOutputCallback, 0);
  26. }
  27. void enable(bool on){
  28. if( on ){
  29. CVDisplayLinkStart(displayLink);
  30. }else{
  31. CVDisplayLinkStop(displayLink);
  32. }
  33. }
  34. }