Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package dealers-choice for openSUSE:Factory checked in at 2026-04-01 19:52:39 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/dealers-choice (Old) and /work/SRC/openSUSE:Factory/.dealers-choice.new.21863 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dealers-choice" Wed Apr 1 19:52:39 2026 rev:8 rq:1344109 version:0.0.11 Changes: -------- --- /work/SRC/openSUSE:Factory/dealers-choice/dealers-choice.changes 2026-03-31 15:23:15.978762586 +0200 +++ /work/SRC/openSUSE:Factory/.dealers-choice.new.21863/dealers-choice.changes 2026-04-01 19:54:32.410880447 +0200 @@ -1,0 +2,12 @@ +Wed Apr 01 09:20:16 UTC 2026 - Andy Alt <[email protected]> + +- dealers-choice 0.0.11: + + * bugfix: uninitialize miniaudio engine on sound load failure + Previously called exit() without ma_engine_uninit(), locking the audio + device and blocking other applications until it was replugged or the + system was restarted (#198) + * Change dealer rotation timeout from 60 seconds to 30 + * Add version line to changes entry for v0.0.10 + +------------------------------------------------------------------- @@ -3,0 +16 @@ +- dealers-choice 0.0.10: Old: ---- dealers-choice-0.0.10.tar.xz New: ---- dealers-choice-0.0.11.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dealers-choice.spec ++++++ --- /var/tmp/diff_new_pack.sVnlBo/_old 2026-04-01 19:54:33.326918603 +0200 +++ /var/tmp/diff_new_pack.sVnlBo/_new 2026-04-01 19:54:33.330918770 +0200 @@ -17,7 +17,7 @@ Name: dealers-choice -Version: 0.0.10 +Version: 0.0.11 Release: 0 Summary: Online Multiplayer Stud and Draw Poker License: MIT ++++++ dealers-choice-0.0.10.tar.xz -> dealers-choice-0.0.11.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/.github/workflows/coverity.yml new/dealers-choice-0.0.11/.github/workflows/coverity.yml --- old/dealers-choice-0.0.10/.github/workflows/coverity.yml 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/.github/workflows/coverity.yml 2026-04-01 09:23:45.000000000 +0200 @@ -80,6 +80,8 @@ # Command to pass to cov-build. command: 'meson compile -C _build' + cov_analyze_args: '--modeling-file coverity/miniaudio_model.c' + # (Informational) The source version being built. # # Default: ${{ github.sha }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/.github/workflows/windows.yml new/dealers-choice-0.0.11/.github/workflows/windows.yml --- old/dealers-choice-0.0.10/.github/workflows/windows.yml 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/.github/workflows/windows.yml 2026-04-01 09:23:45.000000000 +0200 @@ -129,19 +129,24 @@ fi echo "VERSION=${VERSION}" >> "$GITHUB_ENV" fi + case "${{ matrix.platform }}" in + CLANGARM64) ARCH="aarch64" ;; + *) ARCH="x86_64" ;; + esac + echo "ARCH=${ARCH}" >> "$GITHUB_ENV" - name: Build installer if: matrix.platform == 'UCRT64' shell: pwsh run: | - iscc /DVERSION=$env:VERSION packaging\windows\dealers-choice.iss + iscc /DVERSION=$env:VERSION /DARCH=$env:ARCH packaging\windows\dealers-choice.iss if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } - name: Checksum if: matrix.platform == 'UCRT64' shell: pwsh run: | - $file = "dealers-choice-$env:VERSION-setup.exe" + $file = "dealers-choice-$env:VERSION-$env:ARCH-setup.exe" $hash = (Get-FileHash $file -Algorithm SHA256).Hash.ToLower() "$hash $file" | Out-File -Encoding ascii "$file.sha256sum" @@ -150,14 +155,14 @@ uses: actions/upload-artifact@v7 with: name: dealers-choice-windows-installer - path: dealers-choice-${{ env.VERSION }}-setup.exe* + path: dealers-choice-${{ env.VERSION }}-${{ env.ARCH }}-setup.exe* if-no-files-found: error - name: Prerelease (trunk) if: matrix.platform == 'UCRT64' && github.ref == 'refs/heads/trunk' uses: ncipollo/release-action@v1 with: - artifacts: "dealers-choice-${{ env.VERSION }}-setup.exe*" + artifacts: "dealers-choice-${{ env.VERSION }}-${{ env.ARCH }}-setup.exe*" body: "Dealer's Choice Snapshot Release" allowUpdates: true prerelease: true @@ -169,10 +174,11 @@ token: ${{ secrets.GITHUB_TOKEN }} - name: Release (tagged) - if: matrix.platform == 'UCRT64' && startsWith(github.ref, 'refs/tags/') + if: matrix.platform == 'UCRT64' && (startsWith(github.ref, 'refs/tags/') || inputs.version != '') uses: ncipollo/release-action@v1 with: - artifacts: "dealers-choice-${{ env.VERSION }}-setup.exe*" + artifacts: "dealers-choice-${{ env.VERSION }}-${{ env.ARCH }}-setup.exe*" + tag: ${{ inputs.version != '' && format('v{0}', env.VERSION) || '' }} allowUpdates: true prerelease: false omitBodyDuringUpdate: true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/ChangeLog new/dealers-choice-0.0.11/ChangeLog --- old/dealers-choice-0.0.10/ChangeLog 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/ChangeLog 2026-04-01 09:23:45.000000000 +0200 @@ -1,3 +1,13 @@ +2026-04-01 + +- dealers-choice 0.0.11: + + * bugfix: uninitialize miniaudio engine on sound load failure + Previously called exit() without ma_engine_uninit(), locking the audio + device and blocking other applications until it was replugged or the + system was restarted (#198) + * Change dealer rotation timeout from 60 seconds to 30 + 2026-03-30 - dealers-choice 0.0.10: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/README.md new/dealers-choice-0.0.11/README.md --- old/dealers-choice-0.0.10/README.md 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/README.md 2026-04-01 09:23:45.000000000 +0200 @@ -24,16 +24,14 @@ * [Game Results](https://dealer-s-choice.github.io/game_results.html) * [Discussions](https://github.com/Dealer-s-Choice/dealers_choice/discussions) * [Bug Reporting](https://github.com/Dealer-s-Choice/dealers_choice/issues) -* [Releases](https://github.com/Dealer-s-Choice/dealers_choice/releases) +* [Releases](https://github.com/Dealer-s-Choice/dealers_choice/releases/latest) ## Current state The game is in alpha so you may encounter bugs. -Here's a proofread version with a couple of small fixes: - *Dealer's Choice* builds on Windows in an MSYS2 environment. [Release -versions](https://github.com/Dealer-s-Choice/dealers-choice/releases) are +versions](https://github.com/Dealer-s-Choice/dealers-choice/releases/latest) are available as of v0.0.10. There is a development snapshot installer available on [the snapshots page](https://github.com/Dealer-s-Choice/dealers-choice/releases/tag/snapshot). @@ -111,7 +109,7 @@ ## Note on AppImages If you're a Linux user, you can download the AppImage from the [Releases -page](https://github.com/Dealer-s-Choice/dealers_choice/releases), or install +page](https://github.com/Dealer-s-Choice/dealers_choice/releases/latest), or install it with [AppMan](https://github.com/ivan-hc/AM). ## Libraries diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/coverity/miniaudio_model.c new/dealers-choice-0.0.11/coverity/miniaudio_model.c --- old/dealers-choice-0.0.10/coverity/miniaudio_model.c 1970-01-01 01:00:00.000000000 +0100 +++ new/dealers-choice-0.0.11/coverity/miniaudio_model.c 2026-04-01 09:23:45.000000000 +0200 @@ -0,0 +1,48 @@ +/* + * Coverity modeling file for miniaudio. + * + * Teaches Coverity about the acquire/release semantics of the miniaudio + * engine and sound init/uninit functions so that resource leaks — such as + * calling exit() or returning without ma_engine_uninit() / ma_sound_uninit() + * — are detected during scans. + * + * Pass to cov-analyze with: --modeling-file coverity/miniaudio_model.c + */ + +typedef int ma_result; +/* MA_SUCCESS == 0 */ + +void __coverity_resource_acquire__(void); +void __coverity_resource_release__(void); + +typedef struct ma_engine ma_engine; +typedef struct ma_engine_config ma_engine_config; +typedef struct ma_sound ma_sound; + +ma_result ma_engine_init(const ma_engine_config *pConfig, ma_engine *pEngine) +{ + ma_result r; + if (r == 0) + __coverity_resource_acquire__(); + return r; +} + +void ma_engine_uninit(ma_engine *pEngine) +{ + __coverity_resource_release__(); +} + +ma_result ma_sound_init_from_file(ma_engine *pEngine, const char *pFilePath, + unsigned int flags, void *pGroup, + void *pAllocationCallbacks, ma_sound *pSound) +{ + ma_result r; + if (r == 0) + __coverity_resource_acquire__(); + return r; +} + +void ma_sound_uninit(ma_sound *pSound) +{ + __coverity_resource_release__(); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/data/server.conf new/dealers-choice-0.0.11/data/server.conf --- old/dealers-choice-0.0.10/data/server.conf 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/data/server.conf 2026-04-01 09:23:45.000000000 +0200 @@ -4,7 +4,7 @@ action_timeout_ms = 30000 action_timeout_max = 3 wild_exchange_timeout_ms = 40000 -dealer_timeout_ms = 60000 +dealer_timeout_ms = 30000 ante = 50 starting_coins = 20000 max_raises = 3 Binary files old/dealers-choice-0.0.10/data/sounds/game_over.wav and new/dealers-choice-0.0.11/data/sounds/game_over.wav differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/meson.build new/dealers-choice-0.0.11/meson.build --- old/dealers-choice-0.0.10/meson.build 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/meson.build 2026-04-01 09:23:45.000000000 +0200 @@ -1,7 +1,7 @@ project( 'dealers-choice', ['c'], - version: '0.0.10', + version: '0.0.11', meson_version: '>= 0.61.0', default_options: [ 'warning_level=3', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/packaging/PKGBUILD new/dealers-choice-0.0.11/packaging/PKGBUILD --- old/dealers-choice-0.0.10/packaging/PKGBUILD 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/packaging/PKGBUILD 2026-04-01 09:23:45.000000000 +0200 @@ -1,17 +1,17 @@ # Maintainer: Andy Alt <arch_stanton5995 at proton.me> pkgname=dealers-choice -pkgver=0.0.10 +pkgver=0.0.11 pkgrel=1 pkgdesc="Online Multiplayer Stud and Draw Poker" arch=('x86_64' 'aarch64') url="https://github.com/Dealer-s-Choice/dealers_choice" license=('MIT') -depends=('libsodium' 'sdl2' 'sdl2_ttf' 'sdl2_image' 'sdl2_net' 'protobuf-c' 'hicolor-icon-theme') +depends=('canfigger' 'libsodium' 'sdl2' 'sdl2_ttf' 'sdl2_image' 'sdl2_net' 'protobuf-c' 'hicolor-icon-theme') makedepends=('cmake' 'meson' 'ninja') source=("https://github.com/Dealer-s-Choice/dealers_choice/releases/download/v${pkgver}/${pkgname}-${pkgver}.tar.xz") -sha256sums=('SKIP') +sha256sums=('8fb7c8a544ea3a7b025fe1e321ba42f0a4cb36102219449f8236d3d37b26cf45') build() { arch-meson $pkgname-$pkgver build -Db_sanitize=none diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/packaging/Slackbuild/dealers-choice/dealers-choice.SlackBuild new/dealers-choice-0.0.11/packaging/Slackbuild/dealers-choice/dealers-choice.SlackBuild --- old/dealers-choice-0.0.10/packaging/Slackbuild/dealers-choice/dealers-choice.SlackBuild 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/packaging/Slackbuild/dealers-choice/dealers-choice.SlackBuild 2026-04-01 09:23:45.000000000 +0200 @@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd) PRGNAM=dealers-choice -VERSION=${VERSION:-0.0.10} +VERSION=${VERSION:-0.0.11} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/packaging/Slackbuild/dealers-choice/dealers-choice.info new/dealers-choice-0.0.11/packaging/Slackbuild/dealers-choice/dealers-choice.info --- old/dealers-choice-0.0.10/packaging/Slackbuild/dealers-choice/dealers-choice.info 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/packaging/Slackbuild/dealers-choice/dealers-choice.info 2026-04-01 09:23:45.000000000 +0200 @@ -1,10 +1,10 @@ PRGNAM="dealers-choice" -VERSION="0.0.10" +VERSION="0.0.11" HOMEPAGE="https://dealer-s-choice.github.io/" -DOWNLOAD="https://github.com/Dealer-s-Choice/dealers-choice/releases/download/v0.0.10/dealers-choice-0.0.10.tar.xz" -MD5SUM="" +DOWNLOAD="https://github.com/Dealer-s-Choice/dealers-choice/releases/download/v0.0.11/dealers-choice-0.0.11.tar.xz" +MD5SUM="9c1b25ccde17327230d9a5cd2af9bc46" DOWNLOAD_x86_64="" MD5SUM_x86_64="" -REQUIRES="libsodium protobuf-c python3-meson-opt" +REQUIRES="canfigger protobuf-c python3-meson-opt" MAINTAINER="Andy Alt" EMAIL="[email protected]" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/packaging/release-process.txt new/dealers-choice-0.0.11/packaging/release-process.txt --- old/dealers-choice-0.0.10/packaging/release-process.txt 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/packaging/release-process.txt 2026-04-01 09:23:45.000000000 +0200 @@ -12,7 +12,7 @@ ## Every release - Ensure all CI workflows are passing on trunk -- Run the full test suite locally: meson test +- Checkout release branch - Update ChangeLog: set the release date and version (replace "in progress") - Bump version in meson.build (remove -dev suffix) - Update po and pot files: @@ -22,6 +22,13 @@ 'b_sanitize=address,undefined', 'b_lundef=false' - Commit the above changes +- meson setup _release +- meson dist --include-subprojects (runs tests) + +- mv ~/src/DealersChoice/dealers_choice/_release/meson-dist/dealers-choice-0.0.*.tar.xz* \ + ~/src/DealersChoice/ + +- Update packaging; make sure they build (PKGBUILD, Slackbuild) - Create GitHub release from the tag, paste the ChangeLog entry as notes - Close milestone (https://github.com/Dealer-s-Choice/dealers_choice/milestones) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/packaging/windows/dealers-choice.iss new/dealers-choice-0.0.11/packaging/windows/dealers-choice.iss --- old/dealers-choice-0.0.10/packaging/windows/dealers-choice.iss 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/packaging/windows/dealers-choice.iss 2026-04-01 09:23:45.000000000 +0200 @@ -7,6 +7,9 @@ #ifndef VERSION #define VERSION "0.0.0" #endif +#ifndef ARCH + #define ARCH "x86_64" +#endif [Setup] AppName={#AppName} @@ -19,7 +22,7 @@ DefaultGroupName={#AppName} ; Output goes to the repo root (script is in packaging/windows/) OutputDir=..\..\ -OutputBaseFilename=dealers-choice-{#VERSION}-setup +OutputBaseFilename=dealers-choice-{#VERSION}-{#ARCH}-setup Compression=lzma SolidCompression=yes WizardStyle=modern diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/po/de.po new/dealers-choice-0.0.11/po/de.po --- old/dealers-choice-0.0.10/po/de.po 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/po/de.po 2026-04-01 09:23:45.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: dealers-choice\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-30 06:34-0500\n" +"POT-Creation-Date: 2026-03-31 23:08-0500\n" "PO-Revision-Date: 2025-06-19 21:52-0500\n" "Last-Translator: Andy <[email protected]>\n" "Language-Team: German <[email protected]>\n" @@ -41,56 +41,56 @@ msgid "Waiting for dealer to select game..." msgstr "" -#: src/client.c:188 src/client.c:1658 +#: src/client.c:188 src/client.c:1662 msgid "Kick" msgstr "" -#: src/client.c:190 src/client.c:1660 +#: src/client.c:190 src/client.c:1664 msgid "Ban" msgstr "" #. Show dealing screen immediately after click -#: src/client.c:515 +#: src/client.c:519 msgid "Dealing..." msgstr "" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Check" msgstr "Prüfen" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Bet" msgstr "Setzen" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Fold" msgstr "Aufgeben" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Call" msgstr "Mitgehen" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Raise" msgstr "Erhöhen" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Discard" msgstr "Ablegen" -#: src/client.c:1251 +#: src/client.c:1255 msgid "Exchange" msgstr "" -#: src/client.c:1603 +#: src/client.c:1607 msgid "Click a 2, then choose value and suit to assign." msgstr "" -#: src/client.c:2461 +#: src/client.c:2467 msgid "Cancel" msgstr "" -#: src/client.c:2468 src/client.c:2484 +#: src/client.c:2474 src/client.c:2490 #, c-format msgid "Attempting connection to: %s... (%d/%d)" msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/po/dealers-choice.pot new/dealers-choice-0.0.11/po/dealers-choice.pot --- old/dealers-choice-0.0.10/po/dealers-choice.pot 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/po/dealers-choice.pot 2026-04-01 09:23:45.000000000 +0200 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: dealers-choice\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-30 06:34-0500\n" +"POT-Creation-Date: 2026-03-31 23:08-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <[email protected]>\n" @@ -41,56 +41,56 @@ msgid "Waiting for dealer to select game..." msgstr "" -#: src/client.c:188 src/client.c:1658 +#: src/client.c:188 src/client.c:1662 msgid "Kick" msgstr "" -#: src/client.c:190 src/client.c:1660 +#: src/client.c:190 src/client.c:1664 msgid "Ban" msgstr "" #. Show dealing screen immediately after click -#: src/client.c:515 +#: src/client.c:519 msgid "Dealing..." msgstr "" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Check" msgstr "" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Bet" msgstr "" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Fold" msgstr "" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Call" msgstr "" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Raise" msgstr "" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Discard" msgstr "" -#: src/client.c:1251 +#: src/client.c:1255 msgid "Exchange" msgstr "" -#: src/client.c:1603 +#: src/client.c:1607 msgid "Click a 2, then choose value and suit to assign." msgstr "" -#: src/client.c:2461 +#: src/client.c:2467 msgid "Cancel" msgstr "" -#: src/client.c:2468 src/client.c:2484 +#: src/client.c:2474 src/client.c:2490 #, c-format msgid "Attempting connection to: %s... (%d/%d)" msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/po/es.po new/dealers-choice-0.0.11/po/es.po --- old/dealers-choice-0.0.10/po/es.po 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/po/es.po 2026-04-01 09:23:45.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: dealers-choice\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-30 06:34-0500\n" +"POT-Creation-Date: 2026-03-31 23:08-0500\n" "PO-Revision-Date: 2025-07-02 00:18-0500\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -41,56 +41,56 @@ msgid "Waiting for dealer to select game..." msgstr "" -#: src/client.c:188 src/client.c:1658 +#: src/client.c:188 src/client.c:1662 msgid "Kick" msgstr "" -#: src/client.c:190 src/client.c:1660 +#: src/client.c:190 src/client.c:1664 msgid "Ban" msgstr "" #. Show dealing screen immediately after click -#: src/client.c:515 +#: src/client.c:519 msgid "Dealing..." msgstr "" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Check" msgstr "Pasar" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Bet" msgstr "Apostar" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Fold" msgstr "Retirarse" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Call" msgstr "Igualar" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Raise" msgstr "Subir" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Discard" msgstr "Descartar" -#: src/client.c:1251 +#: src/client.c:1255 msgid "Exchange" msgstr "" -#: src/client.c:1603 +#: src/client.c:1607 msgid "Click a 2, then choose value and suit to assign." msgstr "" -#: src/client.c:2461 +#: src/client.c:2467 msgid "Cancel" msgstr "" -#: src/client.c:2468 src/client.c:2484 +#: src/client.c:2474 src/client.c:2490 #, c-format msgid "Attempting connection to: %s... (%d/%d)" msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/po/es_CO.po new/dealers-choice-0.0.11/po/es_CO.po --- old/dealers-choice-0.0.10/po/es_CO.po 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/po/es_CO.po 2026-04-01 09:23:45.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: dealers-choice\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-30 06:34-0500\n" +"POT-Creation-Date: 2026-03-31 23:08-0500\n" "PO-Revision-Date: 2025-07-02 00:18-0500\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -41,56 +41,56 @@ msgid "Waiting for dealer to select game..." msgstr "" -#: src/client.c:188 src/client.c:1658 +#: src/client.c:188 src/client.c:1662 msgid "Kick" msgstr "" -#: src/client.c:190 src/client.c:1660 +#: src/client.c:190 src/client.c:1664 msgid "Ban" msgstr "" #. Show dealing screen immediately after click -#: src/client.c:515 +#: src/client.c:519 msgid "Dealing..." msgstr "" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Check" msgstr "Pasar" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Bet" msgstr "Apostar" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Fold" msgstr "Retirarse" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Call" msgstr "Igualar" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Raise" msgstr "Subir la apuesta" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Discard" msgstr "Descartar" -#: src/client.c:1251 +#: src/client.c:1255 msgid "Exchange" msgstr "" -#: src/client.c:1603 +#: src/client.c:1607 msgid "Click a 2, then choose value and suit to assign." msgstr "" -#: src/client.c:2461 +#: src/client.c:2467 msgid "Cancel" msgstr "" -#: src/client.c:2468 src/client.c:2484 +#: src/client.c:2474 src/client.c:2490 #, c-format msgid "Attempting connection to: %s... (%d/%d)" msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/po/es_MX.po new/dealers-choice-0.0.11/po/es_MX.po --- old/dealers-choice-0.0.10/po/es_MX.po 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/po/es_MX.po 2026-04-01 09:23:45.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: dealers-choice\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-30 06:34-0500\n" +"POT-Creation-Date: 2026-03-31 23:08-0500\n" "PO-Revision-Date: 2025-07-02 00:18-0500\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -41,56 +41,56 @@ msgid "Waiting for dealer to select game..." msgstr "" -#: src/client.c:188 src/client.c:1658 +#: src/client.c:188 src/client.c:1662 msgid "Kick" msgstr "" -#: src/client.c:190 src/client.c:1660 +#: src/client.c:190 src/client.c:1664 msgid "Ban" msgstr "" #. Show dealing screen immediately after click -#: src/client.c:515 +#: src/client.c:519 msgid "Dealing..." msgstr "" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Check" msgstr "Pasar" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Bet" msgstr "Apostar" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Fold" msgstr "Retirarse" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Call" msgstr "Igualar" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Raise" msgstr "Subir la apuesta" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Discard" msgstr "Descartar" -#: src/client.c:1251 +#: src/client.c:1255 msgid "Exchange" msgstr "" -#: src/client.c:1603 +#: src/client.c:1607 msgid "Click a 2, then choose value and suit to assign." msgstr "" -#: src/client.c:2461 +#: src/client.c:2467 msgid "Cancel" msgstr "" -#: src/client.c:2468 src/client.c:2484 +#: src/client.c:2474 src/client.c:2490 #, c-format msgid "Attempting connection to: %s... (%d/%d)" msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/po/fr.po new/dealers-choice-0.0.11/po/fr.po --- old/dealers-choice-0.0.10/po/fr.po 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/po/fr.po 2026-04-01 09:23:45.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: dealers-choice\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-30 06:34-0500\n" +"POT-Creation-Date: 2026-03-31 23:08-0500\n" "PO-Revision-Date: 2025-07-02 00:18-0500\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -41,56 +41,56 @@ msgid "Waiting for dealer to select game..." msgstr "" -#: src/client.c:188 src/client.c:1658 +#: src/client.c:188 src/client.c:1662 msgid "Kick" msgstr "" -#: src/client.c:190 src/client.c:1660 +#: src/client.c:190 src/client.c:1664 msgid "Ban" msgstr "" #. Show dealing screen immediately after click -#: src/client.c:515 +#: src/client.c:519 msgid "Dealing..." msgstr "" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Check" msgstr "Parole" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Bet" msgstr "Miser" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Fold" msgstr "Se coucher" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Call" msgstr "Suivre" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Raise" msgstr "Relancer" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Discard" msgstr "Défausser" -#: src/client.c:1251 +#: src/client.c:1255 msgid "Exchange" msgstr "" -#: src/client.c:1603 +#: src/client.c:1607 msgid "Click a 2, then choose value and suit to assign." msgstr "" -#: src/client.c:2461 +#: src/client.c:2467 msgid "Cancel" msgstr "" -#: src/client.c:2468 src/client.c:2484 +#: src/client.c:2474 src/client.c:2490 #, c-format msgid "Attempting connection to: %s... (%d/%d)" msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/po/it.po new/dealers-choice-0.0.11/po/it.po --- old/dealers-choice-0.0.10/po/it.po 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/po/it.po 2026-04-01 09:23:45.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: dealers-choice\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-30 06:34-0500\n" +"POT-Creation-Date: 2026-03-31 23:08-0500\n" "PO-Revision-Date: 2025-07-02 00:46-0500\n" "Last-Translator: Andy <[email protected]>\n" "Language-Team: Italian <[email protected]>\n" @@ -41,56 +41,56 @@ msgid "Waiting for dealer to select game..." msgstr "" -#: src/client.c:188 src/client.c:1658 +#: src/client.c:188 src/client.c:1662 msgid "Kick" msgstr "" -#: src/client.c:190 src/client.c:1660 +#: src/client.c:190 src/client.c:1664 msgid "Ban" msgstr "" #. Show dealing screen immediately after click -#: src/client.c:515 +#: src/client.c:519 msgid "Dealing..." msgstr "" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Check" msgstr "Check" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Bet" msgstr "Punta" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Fold" msgstr "Molla" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Call" msgstr "Chiamata" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Raise" msgstr "Rilancia" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Discard" msgstr "Scarta" -#: src/client.c:1251 +#: src/client.c:1255 msgid "Exchange" msgstr "" -#: src/client.c:1603 +#: src/client.c:1607 msgid "Click a 2, then choose value and suit to assign." msgstr "" -#: src/client.c:2461 +#: src/client.c:2467 msgid "Cancel" msgstr "" -#: src/client.c:2468 src/client.c:2484 +#: src/client.c:2474 src/client.c:2490 #, c-format msgid "Attempting connection to: %s... (%d/%d)" msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/po/ru.po new/dealers-choice-0.0.11/po/ru.po --- old/dealers-choice-0.0.10/po/ru.po 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/po/ru.po 2026-04-01 09:23:45.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: dealers-choice\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-30 06:34-0500\n" +"POT-Creation-Date: 2026-03-31 23:08-0500\n" "PO-Revision-Date: 2025-07-02 00:18-0500\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -42,56 +42,56 @@ msgid "Waiting for dealer to select game..." msgstr "" -#: src/client.c:188 src/client.c:1658 +#: src/client.c:188 src/client.c:1662 msgid "Kick" msgstr "" -#: src/client.c:190 src/client.c:1660 +#: src/client.c:190 src/client.c:1664 msgid "Ban" msgstr "" #. Show dealing screen immediately after click -#: src/client.c:515 +#: src/client.c:519 msgid "Dealing..." msgstr "" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Check" msgstr "Чек" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Bet" msgstr "Ставка" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Fold" msgstr "Пас" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Call" msgstr "Колл" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Raise" msgstr "Рейз" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Discard" msgstr "Сбросить" -#: src/client.c:1251 +#: src/client.c:1255 msgid "Exchange" msgstr "" -#: src/client.c:1603 +#: src/client.c:1607 msgid "Click a 2, then choose value and suit to assign." msgstr "" -#: src/client.c:2461 +#: src/client.c:2467 msgid "Cancel" msgstr "" -#: src/client.c:2468 src/client.c:2484 +#: src/client.c:2474 src/client.c:2490 #, c-format msgid "Attempting connection to: %s... (%d/%d)" msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/po/sv.po new/dealers-choice-0.0.11/po/sv.po --- old/dealers-choice-0.0.10/po/sv.po 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/po/sv.po 2026-04-01 09:23:45.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: dealers-choice\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-30 06:34-0500\n" +"POT-Creation-Date: 2026-03-31 23:08-0500\n" "PO-Revision-Date: 2026-03-08 15:06-0500\n" "Last-Translator: Andy <[email protected]>\n" "Language-Team: \n" @@ -41,56 +41,56 @@ msgid "Waiting for dealer to select game..." msgstr "" -#: src/client.c:188 src/client.c:1658 +#: src/client.c:188 src/client.c:1662 msgid "Kick" msgstr "" -#: src/client.c:190 src/client.c:1660 +#: src/client.c:190 src/client.c:1664 msgid "Ban" msgstr "" #. Show dealing screen immediately after click -#: src/client.c:515 +#: src/client.c:519 msgid "Dealing..." msgstr "Delar ut..." -#: src/client.c:1248 +#: src/client.c:1252 msgid "Check" msgstr "Passa" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Bet" msgstr "Satsa" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Fold" msgstr "Lägg dig" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Call" msgstr "Syna" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Raise" msgstr "Höj" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Discard" msgstr "Kasta" -#: src/client.c:1251 +#: src/client.c:1255 msgid "Exchange" msgstr "Byt" -#: src/client.c:1603 +#: src/client.c:1607 msgid "Click a 2, then choose value and suit to assign." msgstr "Klicka på en tvåa och välj sedan valör och färg att tilldela." -#: src/client.c:2461 +#: src/client.c:2467 msgid "Cancel" msgstr "" -#: src/client.c:2468 src/client.c:2484 +#: src/client.c:2474 src/client.c:2490 #, c-format msgid "Attempting connection to: %s... (%d/%d)" msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/po/uk.po new/dealers-choice-0.0.11/po/uk.po --- old/dealers-choice-0.0.10/po/uk.po 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/po/uk.po 2026-04-01 09:23:45.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: dealers-choice\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-30 06:34-0500\n" +"POT-Creation-Date: 2026-03-31 23:08-0500\n" "PO-Revision-Date: 2025-07-02 00:18-0500\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -42,56 +42,56 @@ msgid "Waiting for dealer to select game..." msgstr "" -#: src/client.c:188 src/client.c:1658 +#: src/client.c:188 src/client.c:1662 msgid "Kick" msgstr "" -#: src/client.c:190 src/client.c:1660 +#: src/client.c:190 src/client.c:1664 msgid "Ban" msgstr "" #. Show dealing screen immediately after click -#: src/client.c:515 +#: src/client.c:519 msgid "Dealing..." msgstr "" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Check" msgstr "Чек" -#: src/client.c:1248 +#: src/client.c:1252 msgid "Bet" msgstr "Ставка" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Fold" msgstr "Пас" -#: src/client.c:1249 +#: src/client.c:1253 msgid "Call" msgstr "Кол" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Raise" msgstr "Рейз" -#: src/client.c:1250 +#: src/client.c:1254 msgid "Discard" msgstr "Скинути" -#: src/client.c:1251 +#: src/client.c:1255 msgid "Exchange" msgstr "" -#: src/client.c:1603 +#: src/client.c:1607 msgid "Click a 2, then choose value and suit to assign." msgstr "" -#: src/client.c:2461 +#: src/client.c:2467 msgid "Cancel" msgstr "" -#: src/client.c:2468 src/client.c:2484 +#: src/client.c:2474 src/client.c:2490 #, c-format msgid "Attempting connection to: %s... (%d/%d)" msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dealers-choice-0.0.10/src/client.c new/dealers-choice-0.0.11/src/client.c --- old/dealers-choice-0.0.10/src/client.c 2026-03-30 16:22:05.000000000 +0200 +++ new/dealers-choice-0.0.11/src/client.c 2026-04-01 09:23:45.000000000 +0200 @@ -2670,9 +2670,10 @@ if (recv_status != RECV_SUCCESS) exit(EXIT_FAILURE); + bool went_back_result = false; SoundContext_t sound_context = {0}; + sound_context.engineConfig = ma_engine_config_init(); if (player_config->volume == 0 || cli_args->disable_audio) { - ma_engine_config_init(); sound_context.engineConfig.noDevice = MA_TRUE; sound_context.engineConfig.channels = 2; sound_context.engineConfig.sampleRate = 48000; @@ -2707,52 +2708,62 @@ PathconfLimits_t limits; get_pathconf_limits(path->data, &limits); size_t i; + size_t n_sounds_init = 0; + size_t n_coin_sounds_init = 0; for (i = 0; i < SND_NUM_SOUNDS; i++) { char *snd_path = join_paths(limits.path_max, path->data, "sounds", sounds[i].filename); - if (ma_sound_init_from_file(&sound_context.engine, snd_path, 0, NULL, NULL, - &sounds[i].sound) != MA_SUCCESS) { + bool ok = ma_sound_init_from_file(&sound_context.engine, snd_path, 0, NULL, NULL, + &sounds[i].sound) == MA_SUCCESS; + free(snd_path); + if (!ok) { fprintf(stderr, "Failed to init sound %zd\n", i); - exit(EXIT_FAILURE); + goto cleanup_audio; } - free(snd_path); + n_sounds_init++; } for (i = 0; i < ARRAY_SIZE(coin_hit_sounds); i++) { char *snd_path = join_paths(limits.path_max, path->data, "sounds/coin", coin_hit_sounds[i].filename); - if (ma_sound_init_from_file(&sound_context.engine, snd_path, 0, NULL, NULL, - &coin_hit_sounds[i].sound) != MA_SUCCESS) { + bool ok = ma_sound_init_from_file(&sound_context.engine, snd_path, 0, NULL, NULL, + &coin_hit_sounds[i].sound) == MA_SUCCESS; + free(snd_path); + if (!ok) { fprintf(stderr, "Failed to init sound %zd\n", i); - exit(EXIT_FAILURE); + goto cleanup_audio; } - free(snd_path); + n_coin_sounds_init++; } - bool running = true; - bool went_back = false; - do { - EGameSelResult_t sel = handle_game_selection( - player_config, &socket_context, game_settings.client_id, &game_state, &client_state, - sdl_context, font, &sound_context, links, path); - if (sel == GAME_SEL_BACK) { - went_back = true; - break; - } - if (sel == GAME_SEL_ERROR) - break; - - running = handle_game_logic(player_config, &socket_context, &game_settings, &game_state, - sdl_context, font, path, &sound_context); - } while (running); - for (i = 0; i < SND_NUM_SOUNDS; i++) + { + bool running = true; + bool went_back = false; + do { + EGameSelResult_t sel = handle_game_selection( + player_config, &socket_context, game_settings.client_id, &game_state, &client_state, + sdl_context, font, &sound_context, links, path); + if (sel == GAME_SEL_BACK) { + went_back = true; + break; + } + if (sel == GAME_SEL_ERROR) + break; + + running = handle_game_logic(player_config, &socket_context, &game_settings, &game_state, + sdl_context, font, path, &sound_context); + } while (running); + went_back_result = went_back; + } +cleanup_audio: + for (i = 0; i < n_sounds_init; i++) ma_sound_uninit(&sounds[i].sound); - for (i = 0; i < ARRAY_SIZE(coin_hit_sounds); i++) + for (i = 0; i < n_coin_sounds_init; i++) ma_sound_uninit(&coin_hit_sounds[i].sound); ma_engine_uninit(&sound_context.engine); socket_cleanup(&socket_context); SDLNet_Quit(); - return went_back; + return went_back_result; } else { if (out_socket_context) *out_socket_context = socket_context;
