1. 20 Apr, 2021 2 commits
  2. 15 Apr, 2021 8 commits
    • Alexandre Janniaux's avatar
      VLCOpenGLES2VideoView: use dedicated CFRunLoop mode · 0ff76825
      Alexandre Janniaux authored
      The vlc_runloop mode is designed to be executed even when an event is
      being reported by the vout_window used, ie when there is a call to
      CFRunLoopInMode(CFRunLoopGetMain(), CFSTR("vlc_runloop"), ..).
      
      By adding the default mode too, it ensures it would run in the normal
      CFRunLoop too.
      
      Async tasks can still be dispatched without the "vlc_runloop" mode but
      every sync tasks in the display must be done under this mode to prevent
      deadlock from happening between the main thread and the vout_thread.
      
      Fixes #23571
      0ff76825
    • Alexandre Janniaux's avatar
      VLCOpenGLES2VideoView: enforce initial frame size · 1c43c078
      Alexandre Janniaux authored
      The UIView should have a well-defined size from the start.
      1c43c078
    • Alexandre Janniaux's avatar
      VLCVideoUIView: signal initial size during the opening · edafac2c
      Alexandre Janniaux authored
      It avoids the display to open with a size bigger than the device's
      screen, which could lead to out-of-memory failures.
      edafac2c
    • Alexandre Janniaux's avatar
      VLCVidewUIView: report event in another thread · fe49b506
      Alexandre Janniaux authored
      Report events from a different thread than the main thread, and continue
      to execute the main CFRunLoop, but filter the events to only executes
      the ones queued by potential display, ie. those tagged with the mode
      "vlc_runloop".
      
      The vlc_runloop mode is designed to be executed even when an event is
      being reported by the vout_window used, ie. when there is a call to
      CFRunLoopInMode(CFRunLoopGetMain(), CFSTR("vlc_runloop"), ..).
      
      Clients should ensure they also tag their blocks with the default mode
      too. Otherwise, they are likely to never be executed.
      
      Async tasks can still be dispatched without the "vlc_runloop" mode but
      every sync tasks in the display must be done under this mode to prevent
      deadlock from happening between the main thread and the vout_thread,
      typically with the following code:
      
          /* The main loop to run the block into */
          CFRunLoopRef runloop = CFRunLoopGetMain();
      
          /* The modes to execute the block in */
          CFStringRef modes_cfstrings[] = { kCFRunLoopDefaultMode, CFSTR("vlc_runloop") };
          CFArrayRef modes = CFArrayCreate(NULL, (const void **)modes_cfstrings,
                  ARRAY_SIZE(modes_cfstrings), &kCFTypeArrayCallBacks);
      
          CFRunLoopPerformBlock(runloop, modes, ^{
              /* The block content to execute */
          });
      
          /* Don't forget to signal the runloop
          CFRunLoopWakeUp(runloop);
          CFRelease(modes);
      
      To achieve a blocking/sync behaviour, clients can share a binary
      semaphore between the block and the outside of the block. When using a
      vlc_sem_t object, it must be qualified with __block to be modified
      inside of the block.
      
      Refs #23571
      fe49b506
    • Alexandre Janniaux's avatar
      inhibit: add UIKit-based inhibiter · a24a9b28
      Alexandre Janniaux authored
      The inhibiter code is taken from VLCKit inhibiter's handling, and is
      meant to replace this handling.
      a24a9b28
    • Alexandre Janniaux's avatar
      9c051972
    • Alexandre Janniaux's avatar
      64b2d98d
    • Alexandre Janniaux's avatar
      test: iosvlc: disable pinchRecognizer on tvOS · 54c392d7
      Alexandre Janniaux authored
      The pinch recognizer cannot work on tvOS, since tvOS doesn't have a
      touchscreen.
      54c392d7
  3. 14 Apr, 2021 3 commits
  4. 13 Apr, 2021 2 commits
  5. 12 Apr, 2021 25 commits