Files @ r25011:61d28a13bb41
Branch filter:

Location: cpp/openttd-patchpack/source/.github/workflows/preview_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.
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
r24442:8bceb6cadb9e
name: Preview build

on:
  repository_dispatch:
    types:
    - Preview*

jobs:
  preview:
    name: Build preview

    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
      # uid=1001(runner) gid=121(docker)
      options: -u 1001:121

    steps:
    - name: Update deployment status to in progress
      uses: octokit/request-action@v2.x
      with:
        route: POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses
        mediaType: |
          previews:
          - ant-man
          - flash
        owner: ${{ github.event.repository.owner.login }}
        repo: ${{ github.event.repository.name }}
        deployment_id: ${{ github.event.client_payload.deployment_id }}
        state: in_progress
      env:
        GITHUB_TOKEN: ${{ secrets.PREVIEW_GITHUB_TOKEN }}

    - name: Checkout
      uses: actions/checkout@v2
      with:
        ref: ${{ github.event.client_payload.sha }}

    - name: Name branch
      run: |
        name=$(echo "${{ github.event.client_payload.folder }}")
        git checkout -b ${name}

    - 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"
        make -j$(nproc) 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 \
          -DCMAKE_BUILD_TYPE=RelWithDebInfo \
          # EOF
        echo "::endgroup::"

        echo "::group::Build"
        echo "Running on $(nproc) cores"
        emmake make -j$(nproc)
        echo "::endgroup::"

    - name: Publish preview
      run: |
        # setuptools is missing in this Docker image, which breaks installing
        # awscli. So we need to do this in two steps to recover sanity.
        pip3 install setuptools
        pip3 install awscli

        ~/.local/bin/aws s3 cp --only-show-errors build/openttd.data s3://${{ secrets.PREVIEW_S3_BUCKET }}/${{ github.event.client_payload.folder }}/
        ~/.local/bin/aws s3 cp --only-show-errors build/openttd.html s3://${{ secrets.PREVIEW_S3_BUCKET }}/${{ github.event.client_payload.folder }}/
        ~/.local/bin/aws s3 cp --only-show-errors build/openttd.js s3://${{ secrets.PREVIEW_S3_BUCKET }}/${{ github.event.client_payload.folder }}/
        ~/.local/bin/aws s3 cp --only-show-errors build/openttd.wasm s3://${{ secrets.PREVIEW_S3_BUCKET }}/${{ github.event.client_payload.folder }}/

        # Invalidate the cache of the CloudFront distribution
        ~/.local/bin/aws cloudfront create-invalidation --distribution-id ${{ secrets.PREVIEW_CF_DISTRIBUTION_ID }} --paths "/${{ github.event.client_payload.folder }}/*"
      env:
        AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
        AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

    - name: Update deployment status to success
      uses: octokit/request-action@v2.x
      with:
        route: POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses
        mediaType: |
          previews:
          - ant-man
          - flash
        owner: ${{ github.event.repository.owner.login }}
        repo: ${{ github.event.repository.name }}
        deployment_id: ${{ github.event.client_payload.deployment_id }}
        state: success
        environment_url: https://preview.openttd.org/${{ github.event.client_payload.folder }}/
      env:
        GITHUB_TOKEN: ${{ secrets.PREVIEW_GITHUB_TOKEN }}

    - if: failure()
      name: Update deployment status to failure
      uses: octokit/request-action@v2.x
      with:
        route: POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses
        mediaType: |
          previews:
          - ant-man
          - flash
        owner: ${{ github.event.repository.owner.login }}
        repo: ${{ github.event.repository.name }}
        deployment_id: ${{ github.event.client_payload.deployment_id }}
        state: failure
      env:
        GITHUB_TOKEN: ${{ secrets.PREVIEW_GITHUB_TOKEN }}