Files @ r25011:61d28a13bb41
Branch filter:

Location: cpp/openttd-patchpack/source/.github/workflows/ci-build.yml - annotation

Patric Stout
Remove: [Video] no longer draw in a thread

Drawing in a thread is a bit odd, and often leads to surprising
issues. For example, OpenGL would only allow it if you move the
full context to the thread. Which is not always easily done on
all OSes.
In general, the advise is to handle system events and drawing
from the main thread, and do everything else in other threads.
So, let's be more like other games.

Additionally, putting the drawing routine in a thread was only
done for a few targets.

Upcoming commit will move the GameLoop in a thread, which will
work for all targets.
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24360:dda0f5874870
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24938:c6d347f5a77a
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24439:3207de2680bf
r24938:c6d347f5a77a
r24439:3207de2680bf
r24439:3207de2680bf
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24843:4999a1a6d9d8
r24843:4999a1a6d9d8
r24843:4999a1a6d9d8
r24843:4999a1a6d9d8
r24843:4999a1a6d9d8
r24843:4999a1a6d9d8
r24843:4999a1a6d9d8
r24843:4999a1a6d9d8
r24843:4999a1a6d9d8
r24991:5b5476d39783
r24991:5b5476d39783
r24991:5b5476d39783
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24360:dda0f5874870
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24370:1d3dc6fcc807
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24360:dda0f5874870
r24840:38cda9f655b2
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24843:4999a1a6d9d8
r24360:dda0f5874870
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24360:dda0f5874870
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24991:5b5476d39783
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24938:c6d347f5a77a
r24424:844a9c7b4a2a
r24360:dda0f5874870
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24938:c6d347f5a77a
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24424:844a9c7b4a2a
r24935:7306ae8fb1af
r24978:42151fac26c3
r24978:42151fac26c3
r24978:42151fac26c3
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24938:c6d347f5a77a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24938:c6d347f5a77a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24749:3150af924c26
r24749:3150af924c26
r24424:844a9c7b4a2a
r24749:3150af924c26
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24604:a4c13d28fe92
r24604:a4c13d28fe92
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24604:a4c13d28fe92
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24360:dda0f5874870
r24935:7306ae8fb1af
r24978:42151fac26c3
r24978:42151fac26c3
r24978:42151fac26c3
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24935:7306ae8fb1af
r24360:dda0f5874870
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24360:dda0f5874870
r24360:dda0f5874870
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24424:844a9c7b4a2a
r24934:fc42440e6f82
r24934:fc42440e6f82
r24424:844a9c7b4a2a
r24934:fc42440e6f82
r24934:fc42440e6f82
r24934:fc42440e6f82
r24934:fc42440e6f82
r24934:fc42440e6f82
r24934:fc42440e6f82
r24934:fc42440e6f82
r24934:fc42440e6f82
r24934:fc42440e6f82
r24934:fc42440e6f82
r24934:fc42440e6f82
r24934:fc42440e6f82
r24934:fc42440e6f82
r24934:fc42440e6f82
r24934:fc42440e6f82
r24934:fc42440e6f82
r24934:fc42440e6f82
r24934:fc42440e6f82
r24934:fc42440e6f82
r24360:dda0f5874870
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24360:dda0f5874870
r24424:844a9c7b4a2a
r24938:c6d347f5a77a
name: CI

on:
  pull_request:
  push:
    branches:
    - master

env:
  CTEST_OUTPUT_ON_FAILURE: 1

jobs:
  emscripten:
    name: Emscripten

    runs-on: ubuntu-20.04
    container:
      # If you change this version, change the number in the cache step too.
      image: emscripten/emsdk:2.0.10

    steps:
    - name: Checkout
      uses: actions/checkout@v2

    - name: Setup cache
      uses: actions/cache@v2
      with:
        path: /emsdk/upstream/emscripten/cache
        key: 2.0.10-${{ runner.os }}

    - name: Build (host tools)
      run: |
        mkdir build-host
        cd build-host

        echo "::group::CMake"
        cmake .. -DOPTION_TOOLS_ONLY=ON
        echo "::endgroup::"

        echo "::group::Build"
        echo "Running on $(nproc) cores"
        cmake --build . -j $(nproc) --target tools
        echo "::endgroup::"

    - name: Install GCC problem matcher
      uses: ammaraskar/gcc-problem-matcher@master

    - name: Build
      run: |
        mkdir build
        cd build

        echo "::group::CMake"
        emcmake cmake .. -DHOST_BINARY_DIR=../build-host
        echo "::endgroup::"

        echo "::group::Build"
        echo "Running on $(nproc) cores"
        cmake --build . -j $(nproc)
        echo "::endgroup::"

  linux:
    name: Linux

    strategy:
      fail-fast: false
      matrix:
        include:
        - compiler: clang
          cxxcompiler: clang++
          libsdl: libsdl2-dev
        - compiler: gcc
          cxxcompiler: g++
          libsdl: libsdl2-dev
        - compiler: gcc
          cxxcompiler: g++
          libsdl: libsdl1.2-dev
        - compiler: gcc
          cxxcompiler: g++
          extra-cmake-parameters: -DOPTION_DEDICATED=ON

    runs-on: ubuntu-20.04
    env:
      CC: ${{ matrix.compiler }}
      CXX: ${{ matrix.cxxcompiler }}

    steps:
    - name: Checkout
      uses: actions/checkout@v2

    - name: Install dependencies
      run: |
        echo "::group::Update apt"
        sudo apt-get update
        echo "::endgroup::"

        echo "::group::Install dependencies"
        sudo apt-get install -y --no-install-recommends \
          liballegro4-dev \
          libfontconfig-dev \
          libicu-dev \
          liblzma-dev \
          liblzo2-dev \
          ${{ matrix.libsdl }} \
          zlib1g-dev \
          # EOF
        echo "::endgroup::"
      env:
        DEBIAN_FRONTEND: noninteractive

    - name: Get OpenGFX
      run: |
        mkdir -p ~/.local/share/openttd/baseset
        cd ~/.local/share/openttd/baseset

        echo "::group::Download OpenGFX"
        curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip
        echo "::endgroup::"

        echo "::group::Unpack OpenGFX"
        unzip opengfx-all.zip
        echo "::endgroup::"

        rm -f opengfx-all.zip

    - name: Install GCC problem matcher
      uses: ammaraskar/gcc-problem-matcher@master

    - name: Build
      run: |
        mkdir build
        cd build

        echo "::group::CMake"
        cmake .. ${{ matrix.extra-cmake-parameters }}
        echo "::endgroup::"

        echo "::group::Build"
        echo "Running on $(nproc) cores"
        cmake --build . -j $(nproc)
        echo "::endgroup::"

    - name: Test
      run: |
        cd build
        ctest -j $(nproc)

  macos:
    name: Mac OS

    strategy:
      fail-fast: false
      matrix:
        include:
        - arch: x64
          full_arch: x86_64

    runs-on: macos-latest
    env:
      MACOSX_DEPLOYMENT_TARGET: 10.9

    steps:
    - name: Checkout
      uses: actions/checkout@v2

    - name: Prepare cache key
      id: key
      run: |
        echo "::set-output name=image::$ImageOS-$ImageVersion"

    - name: Enable vcpkg cache
      uses: actions/cache@v2
      with:
        path: /usr/local/share/vcpkg/installed
        key: ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}-0 # Increase the number whenever dependencies are modified
        restore-keys: |
          ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}

    - name: Prepare vcpkg
      run: |
        vcpkg install --triplet=${{ matrix.arch }}-osx \
          liblzma \
          libpng \
          lzo \
          zlib \
          # EOF

    - name: Install OpenGFX
      run: |
        mkdir -p ~/Documents/OpenTTD/baseset
        cd ~/Documents//OpenTTD/baseset

        echo "::group::Download OpenGFX"
        curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip
        echo "::endgroup::"

        echo "::group::Unpack OpenGFX"
        unzip opengfx-all.zip
        echo "::endgroup::"

        rm -f opengfx-all.zip

    - name: Install GCC problem matcher
      uses: ammaraskar/gcc-problem-matcher@master

    - name: Build
      run: |
        mkdir build
        cd build

        echo "::group::CMake"
        cmake ${GITHUB_WORKSPACE} \
          -DCMAKE_OSX_ARCHITECTURES=${{ matrix.full_arch }} \
          -DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-osx \
          -DCMAKE_TOOLCHAIN_FILE=/usr/local/share/vcpkg/scripts/buildsystems/vcpkg.cmake \
          # EOF
        echo "::endgroup::"

        echo "::group::Build"
        echo "Running on $(sysctl -n hw.logicalcpu) cores"
        cmake --build . -j $(sysctl -n hw.logicalcpu)
        echo "::endgroup::"

    - name: Test
      run: |
        cd build
        ctest -j $(sysctl -n hw.logicalcpu)

  windows:
    name: Windows

    strategy:
      fail-fast: false
      matrix:
        os: [windows-latest, windows-2016]
        arch: [x86, x64]

    runs-on: ${{ matrix.os }}

    steps:
    - name: Checkout
      uses: actions/checkout@v2

    - name: Prepare cache key
      id: key
      shell: powershell
      run: |
        # Work around caching failure with GNU tar
        New-Item -Type Junction -Path vcpkg -Target c:\vcpkg

        Write-Output "::set-output name=image::$env:ImageOS-$env:ImageVersion"

    - name: Enable vcpkg cache
      uses: actions/cache@v2
      with:
        path: vcpkg/installed
        key: ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}-0 # Increase the number whenever dependencies are modified
        restore-keys: |
          ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}

    - name: Prepare vcpkg
      shell: bash
      run: |
        vcpkg install --triplet=${{ matrix.arch }}-windows-static \
          liblzma \
          libpng \
          lzo \
          zlib \
          # EOF

    - name: Install OpenGFX
      shell: bash
      run: |
        mkdir -p "C:/Users/Public/Documents/OpenTTD/baseset"
        cd "C:/Users/Public/Documents/OpenTTD/baseset"

        echo "::group::Download OpenGFX"
        curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip
        echo "::endgroup::"

        echo "::group::Unpack OpenGFX"
        unzip opengfx-all.zip
        echo "::endgroup::"

        rm -f opengfx-all.zip

    - name: Install MSVC problem matcher
      uses: ammaraskar/msvc-problem-matcher@master

    - name: Configure developer command prompt for ${{ matrix.arch }}
      uses: ilammy/msvc-dev-cmd@v1
      with:
        arch: ${{ matrix.arch }}

    - name: Build
      shell: bash
      run: |
        mkdir build
        cd build

        echo "::group::CMake"
        cmake .. \
          -GNinja \
          -DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-windows-static \
          -DCMAKE_TOOLCHAIN_FILE="c:\vcpkg\scripts\buildsystems\vcpkg.cmake" \
          # EOF
        echo "::endgroup::"

        echo "::group::Build"
        cmake --build .
        echo "::endgroup::"

    - name: Test
      shell: bash
      run: |
        cd ${GITHUB_WORKSPACE}/build
        ctest