Commit graph

13135 commits

Author SHA1 Message Date
Eric House
ecacb0587a handle window resize (more-or-less)
My version of curses doesn't seem to have its own SIGWINCH handler that
does the right thing, so use a pipe to let my handler signal to have
work done outside the interrupt context (when window resizing etc. that
might call malloc() isn't safe.)
2020-01-31 12:29:45 -08:00
Eric House
c44268290f only push menu when opening game to display it 2020-01-30 21:32:37 -08:00
Eric House
e9882b45da fix android crash due to bad build.gradle merge
and add pid to curses app display
2020-01-30 21:21:45 -08:00
Eric House
845dea6eec fix release build 2020-01-30 17:56:25 -08:00
Eric House
12c38ab60c remove the dup target stuff (fixing dbg targets) 2020-01-30 17:01:02 -08:00
Eric House
1d35b7e7e0 Squashed commit of the following:
commit 6ed0462040d6fd45bf43c431df5db4702630da4e
Author: Eric House <eehouse@eehouse.org>
Date:   Thu Jan 30 15:55:29 2020 -0800

    script meant to be run in UserLAnd on android

commit 07b603f4abde00f1cb4face7f27d996fed1b0258
Author: Eric House <eehouse@eehouse.org>
Date:   Thu Jan 30 15:01:00 2020 -0800

    fix gtk invite scenario

    required --name param, apparently.

commit 13201c4cedbf6564516ae850956b2f3155def0b1
Merge: a301491fb 752e3ff3e
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jan 30 12:38:09 2020 -0800

    Merge branch 'android_branch' into duplicate_mode

commit a301491fb5d7b2e09f4b932b16c0a82d1429cb64
Merge: 5401a4bbe d6cf1d2f9
Author: Eric House <xwords@eehouse.org>
Date:   Sat Jan 11 20:45:26 2020 -0800

    Merge branch 'android_branch' into duplicate_mode

commit 5401a4bbe54cdad6adbfa8f9ba8a1c0112ff4dbe
Merge: a92275173 9406297c0
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jan 10 09:54:30 2020 -0800

    Merge branch 'android_branch' into duplicate_mode

commit a922751730be87ae1ea7f6b2ee4263e8b14faabf
Author: Eric House <xwords@eehouse.org>
Date:   Sun Dec 29 16:39:51 2019 -0800

    move game list item pending counter below "dup"

commit 53ca75a56ba9ecde917a5c8c91deaf0afdb04ea0
Merge: 658e4ef92 15239d4a6
Author: Eric House <xwords@eehouse.org>
Date:   Sun Dec 29 16:34:07 2019 -0800

    Merge branch 'android_branch' into duplicate_mode

commit 658e4ef92277d0a1b5c7840883edfab55251d99f
Author: Eric House <xwords@eehouse.org>
Date:   Tue Dec 10 20:33:24 2019 -0800

    move BT UUID into build.gradle

    And add a new UUID for the duplicate build so it doesn't try to talk to
    the xw4d variant when both are installed.

commit a3141c86204bcc134a6fea1e8e6d1cedc743ee13
Author: Eric House <xwords@eehouse.org>
Date:   Thu Nov 21 18:52:11 2019 -0800

    modify icon for easier identification

commit db23f45ac075e8bc50c56b7fb9808a7e270f5625
Author: Eric House <xwords@eehouse.org>
Date:   Thu Nov 21 18:38:18 2019 -0800

    change name of key

    I want to force the apps already out there to generate a correct
    key. This has the lowest impact.

commit 91bc3f6ac406b2fda3426bb363c8e59c3973b75f
Author: Eric House <xwords@eehouse.org>
Date:   Thu Nov 21 18:25:08 2019 -0800

    use the right generated file

    Duh. Used the wrong app/project so FCM couldn't work for the new Dup app
    variant. Now it does.

commit d4ef6f12681bae4437e907e47fbdf1b35bf10d98
Author: Eric House <xwords@eehouse.org>
Date:   Mon Nov 18 09:26:46 2019 -0800

    add comms_getPending(), and refactor to implement

commit 60870e43373a8b73f3541529031791e1457aaa15
Author: Eric House <eehouse@eehouse.org>
Date:   Wed Nov 13 12:30:07 2019 -0800

    first cut at python version of dawg2dict

    Perl version doesn't work and I don't remember enough of the language to
    fix it.

commit b9547d1ec49f1d9d95b3b76b2bcc6ef0d088c531
Author: Eric House <eehouse@eehouse.org>
Date:   Wed Nov 13 12:30:57 2019 -0800

    fix comment

commit 442d219aeab0acfd3713e065f3c46cf0b5d40012
Author: Eric House <eehouse@eehouse.org>
Date:   Tue Nov 12 09:08:08 2019 -0800

    check for undefined variable

commit 247415e18d0b764d3cdb52e9eedeac4b183428c5
Merge: 94c2a7e15 bd3b3e75e
Author: Eric House <eehouse@eehouse.org>
Date:   Tue Nov 19 20:12:18 2019 -0800

    Merge branch 'duplicate_mode' of ssh://maidu2/home/eehouse/src/git/repos/xwords into duplicate_mode

commit 94c2a7e151eeb81bb29589db120a08ffdb5e78fb
Merge: 514e33900 a161abc1b
Author: Eric House <eehouse@eehouse.org>
Date:   Tue Nov 5 21:13:23 2019 -0800

    Merge remote-tracking branch 'tmp-eeh/duplicate_mode' into duplicate_mode

commit a161abc1b2c1c0e8ce76ac71e9feed9d567a3a73
Author: Eric House <xwords@eehouse.org>
Date:   Tue Nov 5 15:56:26 2019 -0800

    make a new CrossDup variant

    It's too much trouble having versions of CrossDbg that aren't compatible.

commit 514e33900fad2695dac89371995ea197a3c9fa4b
Merge: 2d5ec2dfc c69ec5250
Author: Eric House <eehouse@eehouse.org>
Date:   Tue Nov 5 08:43:52 2019 -0800

    Merge branch 'android_branch' into duplicate_mode

commit 2d5ec2dfcdf2788baee2fadd69c8cbb7ac3cafd8
Author: Eric House <eehouse@eehouse.org>
Date:   Sun Nov 3 12:34:48 2019 +0000

    log some hashing stuff (to share while debugging)

commit 564165ed2aef2cd2e893a1552dfb94ca61734f0d
Author: Eric House <eehouse@eehouse.org>
Date:   Sun Nov 3 11:23:40 2019 +0000

    remove unnecessary logging

commit 0111db1951e40ff039cd276d1a77dc31d380ce32
Author: Eric House <eehouse@eehouse.org>
Date:   Sun Nov 3 11:22:27 2019 +0000

    fix log_hex format alignment

commit c7e92680c2624c2d45bade42fddb3334348ce8fc
Author: Eric House <eehouse@eehouse.org>
Date:   Sun Nov 3 10:23:17 2019 +0000

    toward making non-dupe stack hashes match

    Changing the format meant that old builds and new couldn't play non-dupe
    games together, which clearly sucks. There's still a problem, but this
    is part of the fix.

commit fb185eca355840423b561e3237a6529ade409850
Merge: a6df962b1 37ac29e65
Author: Eric House <eehouse@eehouse.org>
Date:   Sun Nov 3 09:43:57 2019 +0000

    Merge branch 'android_branch' into duplicate_mode

commit a6df962b1046ff191453a617afbeee272ce3dc66
Author: Eric House <eehouse@eehouse.org>
Date:   Thu Oct 24 21:28:35 2019 +0200

    cleanup (not dup-specific)

commit f8e31d20ae5399db98589540fff432dc053ec633
Author: Eric House <eehouse@eehouse.org>
Date:   Tue Oct 22 13:38:37 2019 +0200

    use https now to fix broken updating

commit 0add4e050235e9aed5e4f841497c02b80113dbdd
Author: Eric House <eehouse@eehouse.org>
Date:   Tue Sep 10 16:39:19 2019 +0300

    let cells be taller than wide too (take 2)

commit 897d4453702a4c820fb99e60ca0be1bca44d0f42
Author: Eric House <eehouse@eehouse.org>
Date:   Tue Sep 10 16:30:14 2019 +0300

    cleanup (not dup-specific)

commit 2973ffb908fc8a966082870dae348cdc74e646c7
Author: Eric House <eehouse@eehouse.org>
Date:   Thu Aug 29 23:08:36 2019 +0300

    assert that valid message is handled

    I suspect that messages are being dropped (in server) after being
    recorded (in comms), causing the game to stall forever. So add an
    assertion that it's not happening. Haven't seen it yet in a few hundred
    games, but it'll be nice to be more confident.

commit ae6aca71245c934ffe1cb8ba4dc12a0bcbfd1dda
Author: Eric House <eehouse@eehouse.org>
Date:   Mon Aug 26 18:35:12 2019 +0300

    remove x86 from release builds

    I either remove it or add the 64-bit abi. Since it's only there to run
    in the emulator let's just leave it in for DEBUG builds. If I need to
    run a release build in the emulator I can add it back.

commit 4d96f05f2ffea6ca3e9b7dd1776c81fbc0a1350b
Author: Eric House <eehouse@eehouse.org>
Date:   Mon Aug 26 18:14:01 2019 +0300

    arm means two ABIs now

commit f00e8c1258ed62fcf74c7f4db856fb8366d3f348
Author: Eric House <eehouse@eehouse.org>
Date:   Mon Aug 26 18:13:40 2019 +0300

    fix release build warnings

commit 86a7de8c493eb57012531e4953bfde8de38bbb97
Author: Eric House <eehouse@eehouse.org>
Date:   Mon Aug 26 08:23:52 2019 +0300

    up API version to 28 (required soon)

commit 3382823b254cd7f2861362a895a7db483e253781
Author: Eric House <xwords@eehouse.org>
Date:   Sun Jul 21 12:08:33 2019 -0700

    wip: add clear 'X' to [un]pause msg editor

commit f0c0663b85bdcb6f36f50464a06ab5fb6041e738
Author: Eric House <xwords@eehouse.org>
Date:   Sat Jul 13 10:11:17 2019 -0700

    wip: stop using IMPORTANCE_HIGH: too obnoxious

commit 280838b680d10f0e5d280257e21c2eab66dbcec9
Author: Eric House <xwords@eehouse.org>
Date:   Sat Jul 13 10:10:53 2019 -0700

    wip: move misplaced assert

commit de004c956f2804264320adf4e197ed7274092f44
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jul 12 12:06:10 2019 -0700

    wip: store the damned playerNum already

    And remove mistaken minus-sign (typo?)

commit 17434fcb0c35f5e9489a6b01fd40e4908d4547e6
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jul 12 11:47:27 2019 -0700

    wip: use rowid for notification id where possible

commit 5b20ba2f8c4d17118a709cdec556ea38b3f4199d
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jul 12 10:53:50 2019 -0700

    wip: be smarter about looking for timer changes

    Add a dutil callback for when timer value changes. In it, pass the new
    value to DupeModeTimer. In that, don't bother servicing until the saved
    value matches the stored/expected value (because there's otherwise yet
    another save coming.)

commit e98d4154224e2013389962d22476bc571d721aa5
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jul 12 10:48:59 2019 -0700

    wip: add unique notification id generator

    I'm tired of trying to keep rowid-based notifications from trampling
    each other. Now they can be unique per-channel.

commit fd94a0f0d23b4658c93bfb7793e658387bcbbcce
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jul 11 23:55:54 2019 -0700

    wip: auto-pause when nobody moves

    If moves all come in 0 and the timer's running, assume nobody's actually
    playing and pause the game. While at it added [un]pause to game history
    and made history entries include malloc()'d message, requiring a
    free(). Lots of changes, with at least one glitch that games sometimes
    hang after the autopause; and gameslist shows it as nobody's turn though
    when opened the game knows it's a player's turn.

commit dfb6d2c2574fa63d416c7c800e7dbe30b0925143
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jul 8 20:40:11 2019 -0700

    wip: cleanup/refactor

commit d4a37e5a03e874a4d1e43e72183eb73a8c0f70f5
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jul 8 20:23:58 2019 -0700

    wip: run dupemodetimer more than once

    Failure to reset a variable meant I never processed more than one timer
    firing. Oops.

commit a19979ae7f71da4ba8d478c9a5a5ec4bc70b4c96
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jul 5 20:03:57 2019 -0700

    wip: zero timer value when move's been made

    Used to actually set the timer value to 0 when move was made, and
    DupeModeTimer expected that. So zero the stored value before returning
    it IFF move's been made already.

commit 7c52ce2a6a08db3b4e2a1bc32f71b073227f23ce
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jul 5 19:48:29 2019 -0700

    wip: add pause button to notification

    Make it easier to discover pausibility by adding pause button to
    always-on notification. Implemented by opening the game and then within
    it the Pause confirm alert, which required passing a boolean Extra
    through from the launch intent to the one passed into BoardDelegate.

commit 9f82c2f2a3d710f6ad52b1b4f570625e2c19e277
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jul 5 14:31:43 2019 -0700

    wip: fix to redraw timer when only turnDone changes

commit dee10cf35521018805621e3e2b4b58f2c2dee686
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jul 5 13:36:06 2019 -0700

    wip: fix compile

commit b1e55307ccd8a849afddc27f9214eea738eb25d7
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jul 5 11:43:13 2019 -0700

    wip: show timer when paused, and dim when turn done

commit 289080dcfa19e36ea0aa6bd204b61f81872f2b38
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jul 1 21:01:09 2019 -0700

    wip: save separate excuses for pause and unpause

commit 0d427df8f45cc97e385886058b0b456a4e4ca495
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jul 1 21:00:20 2019 -0700

    wip: invoke pause stuff via tap on timer

commit 6ef72472426c61573249e17a4842247114ecd432
Author: Eric House <xwords@eehouse.org>
Date:   Sun Jun 30 20:39:17 2019 -0700

    wip: pass name with pause info for better notification

commit 429baf6edb41a6821103a499b88406de9eb13673
Author: Eric House <xwords@eehouse.org>
Date:   Sat Jun 29 11:50:40 2019 -0700

    wip: improve pause/unpause confirm dialog

commit 9a302b137d56966513393abb4ca3169274ad72e3
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 28 21:45:17 2019 -0700

    wip: pass just the message. Let client package it.

commit 6c9025e347a1fb97b90778db6563cd22a5aaa2b8
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 28 21:41:24 2019 -0700

    wip: trigger notifications etc on pause change

commit dabe79c58c1a6ba1c098688dd2b6b764c543e98b
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 28 21:18:13 2019 -0700

    wip: missing files

commit 352584858fa106b2094e9a393a9b3959a90511b9
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 28 21:15:58 2019 -0700

    wip: pass explanatory message with [un]pause

commit a99976713b5f35ee61fc9629fb2df9ac11af9098
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 28 15:28:55 2019 -0700

    set dbname in build.gradle

commit c0b3be342ad9d89b43ba00d77ae91ad09f8ff211
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 28 10:00:25 2019 -0700

    fix crash on initial install

    uninitialized variable

commit 3656f1d938c61ebf9ac780905f1a084cb4b024f1
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 27 13:35:30 2019 -0700

    wip: fix too-frequent dupe-game checking

    Do it all on a a background thread, and never process a game that was
    added for processing while being processed. Fixes re-opening because we
    just changed it, but may miss changes that matter.

commit a977b8fa51a8e8f9a469bc6fbf305364a29ef8ac
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 27 11:10:14 2019 -0700

    wip: progress on timers

    Mostly fixing DupeModeTimer to do less on main thread.

commit cb4cdc1c8221dfc94e9c9ef889d5d1b099b44049
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 27 07:14:13 2019 -0700

    use macro for callbacks (as elsewhere)

commit 997de250c8d8e0a2de0b949258b06b8998bc1086
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 26 22:34:34 2019 -0700

    wip: transmit [un]pause to other devices

commit 970fc8c9dbf3883211c1934f3f999149532609a8
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 26 17:15:55 2019 -0700

    wip: more timer tweaks

commit b67b836028216345ef8d6d157bdaf9f59f698df4
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 26 15:01:04 2019 -0700

    wip: fix assignment to wrong variable

commit 48cafcec1471e064413ade48ed79b51f1e7fb922
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 26 14:41:50 2019 -0700

    wip: wire up [un]pause menus in Android board

commit 0476f1b21f3bd30e3ae970dc85a72a7eac67d5d9
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 26 11:09:19 2019 -0700

    wip: pause/unpause without communication

commit 71815b2f17f0ca354eb6dd4dd12f65d309723db1
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 26 10:56:09 2019 -0700

    wip: start adding [un]pause support

commit bc4f04c724f51668ace3db17703aa1446fad7405
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 26 10:07:24 2019 -0700

    wip: fix to work when timer not set

commit 2b271abbb487aa8c5fa7f792d898c72f5d69e270
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 26 09:53:29 2019 -0700

    wip: show tiles face-up in history for dup-mode

    No point in hiding them when everybody has the same.

commit 945b8527847af20ca955fb313b7bf49887e4e012
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 26 09:47:19 2019 -0700

    wip: don't draw paused (0:00) timer in duplicate mode

    Required passing in a new boolean

commit 6229fb88302d6da8d432a743955f3dc54d871bda
Author: Eric House <xwords@eehouse.org>
Date:   Tue Jun 25 19:16:40 2019 -0700

    wip: adding timers

    interpret the existing timer value as per-move, counting down to 0. When the timer fires, commit and send moves for all local players.
    On Android, show notifications for games where a timer's running and nothing's been committed yet. Very rough, and somehow broke the
    python test script for duplicate games.

commit 7892c42c69d2985b39c9fd50053fad3d5f03ba5a
Author: Eric House <xwords@eehouse.org>
Date:   Tue Jun 25 16:40:14 2019 -0700

    fix crash closing app when timers enabled

commit 1fbf78931b57ff4d92381a3b7f7e39770cb96ae0
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jun 24 12:23:33 2019 -0700

    assert thread is same for map and unmap

    It'll be a while before I'm comfortable moving this to main branch

commit 046b2e598ae8368eed6e68b5fbaeba69d0416b96
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jun 24 12:15:40 2019 -0700

    add refcount on thread->env mapping

    Just as a safeguard to ensure I'm not removing something I'll want
    later. There appears to be no attempt at this point to use a stacked
    protocol -- attempts to add what's already there are just dropped -- so
    actual refcounting isn't working now. But if I double-remove I want to know.

commit 5c44e3cd2df87be904db6a7689c59be4fcf2696b
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jun 24 09:32:36 2019 -0700

    fix breakage from backport and rebase

commit 4476bf10f222af90547e935d7eabd69fff0be427
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jun 24 09:13:17 2019 -0700

    add timer to gtk's new-game dialog

commit fb50963e4314f85e8013717e4435671cb66b91df
Author: Eric House <eehouse@eehouse.org>
Date:   Sat Jun 22 20:29:26 2019 -0700

    tweak text

commit 4d7fc28b0e0cc4c0e2c877401eb170a4764059f5
Author: Eric House <eehouse@eehouse.org>
Date:   Sat Jun 22 08:56:27 2019 -0700

    make all config spinners use same styles

    One had a label. How all do, and styles make them the same.

commit 5f064b31be8d8dfff0ada1d34acf2792ac6c721d
Author: Eric House <eehouse@eehouse.org>
Date:   Sat Jun 22 08:23:35 2019 -0700

    make label-plus-timer-setting single-line

commit 38a271578dda87a025acd28c065a9748d88e7246
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 14 16:32:57 2019 -0700

    wip: specify smaller size to avoid wrap on some phones

    No idea if this will be enough. Or if just saying "one-line" would work
    better.

commit 8e71bfbc011747b7738fd12e437fd73da7a7b01c
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 14 15:08:51 2019 -0700

    wip: fix false dup-mode tag in games list

    The layouts are reused, so it needs to be hidden for the non-dupe case
    in case it represented a dup-mode game before and the tag was revealed.

commit 2186d72e04df901b53a6d578c24a945b01245f52
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 14 14:50:15 2019 -0700

    fix listing of Hex language (not dup-specific)

commit a9afebea7493438681e3ebcc366f38542ecf4691
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 14 11:48:07 2019 -0700

    wip: fix div-by-zero when all games are duplicate

commit 1925ff93cd1019f4daa6c9b86222dbf9f763d876
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 14 10:30:45 2019 -0700

    wip: store scores in as many bits as largest requires

    breaks storage format!

commit 8fb2678e8e937990ad63569b39c5c12a54a9089b
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 13 20:26:50 2019 -0700

    wip: reduce scores correctly in dup-mode after undo

commit d1d72ce840eef5a1f9c0e3118660a9498e790848
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 13 18:26:15 2019 -0700

    wip: fix tiles not being sorted after undo

    I'm doing this in the model where there's no setting to prevent
    sorting. Figure undo's a violent enough change nobody will care.

commit a8a36e8dfa1f61805932cabf607cf6f01b18a2d3
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 13 17:49:00 2019 -0700

    wip: inval tray when copying from DUP player's

    Fix failure to correctly draw current tray contents after replacement
    based on winning dup. move.

commit 8b2f877f01cf954392841ee3e1eb8b75ce05b646
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 13 17:13:17 2019 -0700

    wip: mark gameslist items with "dup" if in dup mode

commit 11f680fcce14a0303f50d685dde741b2d57241be
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 13 10:55:40 2019 -0700

    wip: correct move count display in dup-mode case

commit 84bced651a5765ce5eacef90d653e1807a5e5a1b
Author: Eric House <xwords@eehouse.org>
Date:   Tue Jun 11 15:29:30 2019 -0700

    wip: fix crashes using word-lookup

    Assertions about dup mode and pending plays being legal words were wrong
    given how commitTurn() was used building a temp model inside
    model_listWordsThrough().

commit 66b39ca29616dd5f7ae948185b6d16f2d207e45b
Author: Eric House <xwords@eehouse.org>
Date:   Sun Jun 9 14:43:28 2019 -0700

    print average scores at end of run

    Should really be done separately by number of players, as non-dup games
    with more players will have lower scores as each has fewer turns.

commit 3f722d974eaa77883f169974bca18e14b89dd829
Author: Eric House <xwords@eehouse.org>
Date:   Sun Jun 9 10:30:26 2019 -0700

    wip: notifiy turn change listeners in DUP case

    Fixes occasional failure to update Exipration display in game list items
    when a move's made.

commit 8fd13b8fc5040db0c5b631e5f97a31db08d7d053
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 22:16:23 2019 -0700

    wip: don't cache variable locally

    For some reason it's not set on K's phone. This is safer: what's always
    worked, and it's late....

commit 6b67c4a59ca42a28d263f22ef334fe0d40fbab80
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 19:07:11 2019 -0700

    wip: move status strings into resources

commit 6779c31f21e26abcbf0364322db1021ad3d82985
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 18:43:56 2019 -0700

    wip: add status alerts for dup state transitions

    So users know what's up, add not-again alerts when server gets moves but
    can't yet act and when client sends moves.

commit 88770a9dbbe80d2d6364cd8402f4cc2e2f2ec367
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 13:03:54 2019 -0700

    wip: create local copy of inDuplicateMode var

commit d157f114b1e1fb91da015bb6238c70c61b58b154
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 12:38:00 2019 -0700

    wip: fix misplaced assert

commit 2f7230472f846ca29c791c9799a070415271e940
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 12:08:39 2019 -0700

    wip: fix non-dup-mode scores and enable undo

commit 23a11e65e218762408315bbba1ef3d0b0f6808f1
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 11:16:05 2019 -0700

    wip: list all players in a tie

commit 250bc52a044b89f8c39f2bf9a29cd0ce58b2d1a5
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 10:58:40 2019 -0700

    wip: better last-move explanations

    on android and linux. Required passing an array through the JNI which in
    turn encouraged some refactoring.

commit 9cddab3be0164028a30997b5528bfc3334488dae
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 10:22:21 2019 -0700

    wip: use only one ASSIGN in duplicate mode

    They're otherwise all the same, and the other types all have
    playerNum == DUP_PLAYER, so let's be consistent.

commit df50f81db9eace30884613ef4d9ec1c10904f1d9
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 08:47:59 2019 -0700

    wip: call assertSorted() before scoring

    the place that was the original problem

commit ccb026b82ebe600a697f36f67ccab250ac49b32c
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 08:43:31 2019 -0700

    wip: fix so MoveInfo tiles always in order

    Display of last-played move didn't work for duplicate case because
    scoring assumes sorted tiles. So always sort, and assert sorted when
    writing to and reading from stream.

commit a0967512f60354afd15ef6877f48bcc891a1d6d2
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 5 08:58:44 2019 -0700

    wip: script progress shows dup- vs non-dup-mode

commit 947594afb0b1c681743fbe274d58ded302f1414a
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 5 08:18:19 2019 -0700

    wip: allow mix of dup- and non-dup games in test script

commit a433cb230008a6cea8236c56a3d04c97a7702a80
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 5 08:03:35 2019 -0700

    wip: work around misunderstood NPE (not dup-only)

commit a54a015983890338772de5043bb242aa8ebeb202
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 5 08:03:14 2019 -0700

    wip: cleanup and add debug/logging util

commit 28c13b678f36c4c4678b1467e68daf3297db0464
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 5 07:58:14 2019 -0700

    wip: don't exit engine when checking tray in dup mode

    Android tends to abort the search because it has UI events
    unprocessed. I'm hoping it's generally so quick that this is ok. If not,
    I'll need to be more clever, e.g. adding an option to end the search
    after finding only one move rather than the best move.

commit c807cb91d25a789fd3ce0e739ad864b6e84631e6
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 5 07:47:04 2019 -0700

    wip: fix broken compile

commit 960dacdd5d7882f0b9cca9b5ad3e884bb04b9873
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 5 07:18:24 2019 -0700

    wip: fix pool having too many tiles when engine busy

    Bad loop structure meant I exited only after replacing in pool tiles I
    was actually keeping.

commit 8ff5a5b27d319b55730688dc6e4bfd9a7eef59db
Author: Eric House <xwords@eehouse.org>
Date:   Tue Jun 4 19:31:34 2019 -0700

    wip: don't include number of players figuring pass count

    otherwise we wait too long for duplicate mode game to end

commit 19677f2bb6a2eabb80d99d55087621f483cd3e07
Author: Eric House <xwords@eehouse.org>
Date:   Tue Jun 4 19:30:41 2019 -0700

    wip: log tile sets in and out

commit 9a0993ec30cb109c2171f141341f3e926ff801f9
Author: Eric House <xwords@eehouse.org>
Date:   Tue Jun 4 19:29:32 2019 -0700

    wip: no longer generate trades randomly

commit 2fc37b1f94c966669119e9f7b31ce8fa2d2971e0
Author: Eric House <xwords@eehouse.org>
Date:   Tue Jun 4 19:19:06 2019 -0700

    wip: figure bits-per-tile correctly

commit 295579d06a512d0a0012e725f42994e4b78436fa
Author: Eric House <xwords@eehouse.org>
Date:   Tue Jun 4 08:52:49 2019 -0700

    wip: flag dup-mode games and nuke all on demand

    Add a bit to a summaries table field so dup-mode games can be
    identified. Add disabled code to nuke them all without attempting to
    open, something that still needs doing on occasion.

commit ddb73d9ccf66fd516ff10394cddb8f99956d99d5
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jun 3 17:39:21 2019 -0700

    wip: get rid of new move types

    It's enough to know whether we're in duplicate mode at runtime, as
    confirmed by the assertions from the last commit.

commit 70918077c13eebc1651a607da326eaba97fc6813
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jun 3 12:10:35 2019 -0700

    wip: assert new move types are redundant

    Looks like I don't need them: I can know whether I'm in duplicate mode
    or not and interpret them appropriately. This commit is to check; next
    will remove the types.

commit de677d7276be4a78e1819920403a93fe8ca36a13
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jun 3 11:23:38 2019 -0700

    wip: don't dup-trade when no tiles left in pool

    and don't count dup-trade as a pass when deciding whether to end game.

commit 6914822fcb1256afb84933c0937eeecd0d906aa6
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jun 3 11:00:38 2019 -0700

    wip: trade when nobody can move

    Add a new move type, duplicate-trade. Generate and transmit one of those
    when none of the submitted moves scores any points. And for testing,
    randomly do it in DEBUG builds occasionally (should likely be a param
    passed by the test script instead.) Still generates a very few
    assertions run from the script, but worth snapshotting still.

commit 683fb31f2288b3767d1b8495c9ed71030556b018
Author: Eric House <xwords@eehouse.org>
Date:   Sun Jun 2 10:09:26 2019 -0700

    add prefs settings to unhide dup mode and for new-game default

    For now, it should be hard to stumble onto it, so add a debug-only
    setting so that all options are hidden by default. And so if you are
    using it it's easier to use, add a new-game default setting (itself
    hidden at first via the above.) Eventually I suspect it'll be easier to
    find for French-localized devices.

commit e7816d7587b582311a79e253c55e916f32c84c4d
Author: Eric House <xwords@eehouse.org>
Date:   Wed May 29 10:03:13 2019 -0700

    cleanup

commit 78518d2af7c7787d46025ddee85401bdc75d7be7
Author: Eric House <xwords@eehouse.org>
Date:   Tue May 28 06:54:17 2019 -0700

    fix obscure NPE (not duplicate-specific)

commit d4f9bb2be51bd57fe87e1d5157e9e6eb408df528
Author: Eric House <xwords@eehouse.org>
Date:   Tue May 28 06:44:57 2019 -0700

    wip: fix NPE setting title too early

commit d02a2bf9b27544b8102025f599754d03797addb7
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 27 20:12:14 2019 -0700

    wip: fix crashes and stalls script found

    I was using a non-local player's model as scratch then failing to fully
    update it before loading the winning tray in.

commit 4e611150248cb4b1d20281e73e68b0f44a6fca1e
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 27 14:38:12 2019 -0700

    wip: add strings where test script can find them for dup games

commit 0685d64f9c7e17735bb651722b99f645aefe8ce8
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 27 14:36:44 2019 -0700

    wip: fix assert when no tiles in move

commit e02436fd7135b7c9fb799f1f8a1c91e0d7abb5ea
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 27 08:55:03 2019 -0700

    wip: mark duplicate games a bit

    Add "(dup.)" to game title and new string to the commit confirm alert.

commit ef32d09205d126338046f45aec34d44853523a9f
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 27 08:51:39 2019 -0700

    wip: fix tray-check bugs

    Needed to run the engine against the tray of the winning move, even if
    it wasn't local. Engines haven't existed for non-local players before so
    some assertions weren't happy.

commit f0a03d41602037150c9f9872a7b6a5e1cd44e038
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 27 08:11:13 2019 -0700

    fix to compile on Android

commit c442c92ab18e021743636e09956230fc78eb45fc
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 27 06:53:55 2019 -0700

    fix breakage from too-eager refactoring

commit eff9e3aee484d8c2159b6c59d5fd4a734dc5a77f
Author: Eric House <xwords@eehouse.org>
Date:   Sun May 26 19:51:21 2019 -0700

    wip: refetch new tiles if current tray doesn't allow any moves

commit 47be80c68382dc1ac7c6a648f82e597bd0dde0df
Author: Eric House <xwords@eehouse.org>
Date:   Sat May 25 13:34:24 2019 -0700

    wip: add logging trying to catch stall

commit ccdb3a9d21d0d0a7de2fd3588dcb64754f747ad0
Author: Eric House <xwords@eehouse.org>
Date:   Fri May 24 06:54:04 2019 -0700

    wip: include dupMode in BT and SMS invitations

    Add it to the json and url read/write code so other invitation types
    also work.

commit 959895981505b9a5e58d9212e76bfb7c6f491f34
Author: Eric House <xwords@eehouse.org>
Date:   Thu May 23 20:34:33 2019 -0700

    add option to have all robots at full smartness

    as a test of duplicate, makes all scores the same

commit bd520de6f83d7dd718cd5a50fe16d5414ce63654
Author: Eric House <xwords@eehouse.org>
Date:   Thu May 23 20:33:55 2019 -0700

    wip: fix method-name parens assert printf

commit d8196e9fc252d488b2d42527a734ace9926517cd
Author: Eric House <xwords@eehouse.org>
Date:   Thu May 23 20:33:37 2019 -0700

    wip: remove some logging

commit 4fa394f342b000d7ee44b42a513ea97f9f2d414e
Author: Eric House <xwords@eehouse.org>
Date:   Wed May 22 19:43:52 2019 -0700

    wip: add ability to run test app in duplicate mode

    Doesn't come close to passing :-(

commit cb920e34ee9e3ab3000c89370d722a6a48abfdf5
Author: Eric House <xwords@eehouse.org>
Date:   Wed May 22 16:47:20 2019 -0700

    wip: report scores when move over (sorted by score)

    Still need to made the strings localizable.

commit c3e72140a1966f53b165ff43d8b9e59951e65c94
Author: Eric House <xwords@eehouse.org>
Date:   Wed May 22 13:57:45 2019 -0700

    wip: fix problems opening old-version move stacks

    Since the stack's not rewritten each time it's saved (moves stay in the
    stream) the versioning scheme can't work. Instead use an extra bit to
    store whether the stack uses the new format requiring an extra bit for
    moveType.

commit b635c176820916b344657e9146fb28b998adb9f5
Author: Eric House <xwords@eehouse.org>
Date:   Tue May 21 18:48:31 2019 -0700

    wip: fix end-of-game message and initial turn assignment

commit 8bccd4e482fd48307ed22f5d9bc36966667f0084
Author: Eric House <xwords@eehouse.org>
Date:   Tue May 21 18:10:48 2019 -0700

    wip: UI doesn't need to always show the same turn

    Figure what "turn" it is based on what candidate moves have been
    reported locally. Fixes Android not showing games as needing attention
    on all devices.

commit 909ce7ed7ab13317cbc51288ed71e97a4571414c
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 20 21:37:22 2019 -0700

    wip cleanup

commit 6c5f4847a463a4d2022384677402d83ee1f87d1a
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 20 20:26:08 2019 -0700

    wip: split method

commit 4d489591eb6fc6233d413cc906f84fe3e099b701
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 20 19:49:33 2019 -0700

    wip: update scoreboard and end game correctly

commit 4c3aaa741bb903c8c1c74c4156ea626c4a0d3986
Author: Eric House <xwords@eehouse.org>
Date:   Sun May 19 21:15:56 2019 -0700

    wip: don't allow trade in dup mode

commit ea7b3495080fafe91722d2ce51299bf49e3119de
Author: Eric House <xwords@eehouse.org>
Date:   Sun May 19 21:09:30 2019 -0700

    wip: get building/limping along on Android

    parity with GTK, basically.

commit 72d493588d518868955296fd59033fd6dc763268
Author: Eric House <xwords@eehouse.org>
Date:   Sun May 19 17:57:45 2019 -0700

    wip: break point tie based on word length

commit 08101b4e468efdd2b4b17f85a1492526993be978
Author: Eric House <xwords@eehouse.org>
Date:   Sun May 19 17:12:28 2019 -0700

    wip: fix networked games

commit d83094bfe750560b868d1915d4375a65120817da
Author: Eric House <xwords@eehouse.org>
Date:   Sun May 19 16:28:46 2019 -0700

    wip: fix problems updating model

    Simplest test case now works: two-player one-device game in duplicate
    mode can make a bunch of turns. Save/restore of game works. All on gtk;
    Android likely doesn't build.

commit 8f7a00f1eecba537061fc8e22f3eb44591152cfa
Author: Eric House <xwords@eehouse.org>
Date:   Sat May 18 10:38:37 2019 -0700

    wip: tweak commit of dup move

commit b3212792311e69b2253832aedb052b6cc3c86eb9
Author: Eric House <xwords@eehouse.org>
Date:   Sat May 18 10:23:08 2019 -0700

    wip: correctly update board with dup move

    and fix crash when move stack created with wrong version

commit 449f6f6ff4402ddc9581822ecbde9bb51120db85
Author: Eric House <xwords@eehouse.org>
Date:   Sat May 18 09:10:31 2019 -0700

    wip: update scores correctly when loading stack

commit 0c83965fe8fba7c7aea7407ce6dfb37bc0add39f
Author: Eric House <xwords@eehouse.org>
Date:   Sat May 18 08:40:29 2019 -0700

    wip: add dupe-mode move to move stack

    Add new move entry type including a move and new tiles plus the scores
    for all players. Reflect move and tiles when loading from file. Next:
    figure out what to do with the scores.

commit 78edef74a2c19e4d513fea9da0c6ede4cc146b87
Author: Eric House <xwords@eehouse.org>
Date:   Fri May 17 10:20:18 2019 -0700

    wip: identify highest-scoring word

commit ac7c0b0fb543576e2121dbbeaf17bb3a13cb19c6
Author: Eric House <xwords@eehouse.org>
Date:   Thu May 16 21:34:04 2019 -0700

    wip: transmit client dupe-mode moves to server

    and fix failure to get dupe flag into server on client side

commit de85dfaa2f484a1a02cd6997a7e732daa28de16b
Author: Eric House <xwords@eehouse.org>
Date:   Thu May 16 19:54:41 2019 -0700

    wip: invitation works to assign tiles

    Include in nli sent across that we're in DUPLICATE mode. When sending
    and receiving assigned tiles in that mode, send only one set and remove
    from pool only once. But: games don't always connect, which might or not
    be due to these changes. Next: handle commit by sending the move but not
    a new tray.

commit dcb9e8f14d14749f81c63e08eed8418719555fb8
Author: Eric House <xwords@eehouse.org>
Date:   Thu May 16 19:46:25 2019 -0700

    wip: remove excessive logging

commit 67c62d84f1dfe2bc11463316697a0c62d449e429
Author: Eric House <xwords@eehouse.org>
Date:   Thu May 16 08:15:20 2019 -0700

    wip: accumulate local turns

    Track whether players have committed turns yet. Once all have
    notice (but do nothing yet).

commit d8dcb43dbc396c0f8fdb9a890b958f168137c2ad
Author: Eric House <xwords@eehouse.org>
Date:   Wed May 15 22:24:04 2019 -0700

    wip scoreboard shows it can be multiple players' turns

    modify how scoreboard is drawn. next: let players commit until all are
    done

commit 97ecc7bd81bac2a0832dfa01df3d7130547a1829
Author: Eric House <xwords@eehouse.org>
Date:   Wed May 15 20:05:25 2019 -0700

    wip: add duplicate checkbox and assign same tiles to all

    next: make it everybody's turn until it's nobody's. This is all in
    standalone mode for now.

commit bd3b3e75ef6a0bbf4de20cbdc1aaabb9adae2a9c
Author: Eric House <xwords@eehouse.org>
Date:   Sun Jul 21 12:08:33 2019 -0700

    wip: add clear 'X' to [un]pause msg editor

commit a0999d6af44d126fb450b220b49a743a3c7e439c
Author: Eric House <xwords@eehouse.org>
Date:   Sat Jul 13 10:11:17 2019 -0700

    wip: stop using IMPORTANCE_HIGH: too obnoxious

commit 3a7fd5758ffdaabf4b867f423db2d5558d1f10c0
Author: Eric House <xwords@eehouse.org>
Date:   Sat Jul 13 10:10:53 2019 -0700

    wip: move misplaced assert

commit d769855259daf340446e8c69b8091eec1cbc5d73
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jul 12 12:06:10 2019 -0700

    wip: store the damned playerNum already

    And remove mistaken minus-sign (typo?)

commit 9622a575863393668ac91a6233e5962ca413c8f8
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jul 12 11:47:27 2019 -0700

    wip: use rowid for notification id where possible

commit 699b76db2683f7ee9c96adb6d00e9ad623275fba
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jul 12 10:53:50 2019 -0700

    wip: be smarter about looking for timer changes

    Add a dutil callback for when timer value changes. In it, pass the new
    value to DupeModeTimer. In that, don't bother servicing until the saved
    value matches the stored/expected value (because there's otherwise yet
    another save coming.)

commit 25d3bc0a78557957c1cc4f1c727e581491bc969c
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jul 12 10:48:59 2019 -0700

    wip: add unique notification id generator

    I'm tired of trying to keep rowid-based notifications from trampling
    each other. Now they can be unique per-channel.

commit 5b2f692adaddf1cfe58f073fa4ea4e39f31b7785
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jul 11 23:55:54 2019 -0700

    wip: auto-pause when nobody moves

    If moves all come in 0 and the timer's running, assume nobody's actually
    playing and pause the game. While at it added [un]pause to game history
    and made history entries include malloc()'d message, requiring a
    free(). Lots of changes, with at least one glitch that games sometimes
    hang after the autopause; and gameslist shows it as nobody's turn though
    when opened the game knows it's a player's turn.

commit 1db4b1a3221f077cb797cc8e1c9a0468a9bc7f1f
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jul 8 20:40:11 2019 -0700

    wip: cleanup/refactor

commit 873dbf3e7c46dbe9bf0cd7163788f9c0f35b32ea
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jul 8 20:23:58 2019 -0700

    wip: run dupemodetimer more than once

    Failure to reset a variable meant I never processed more than one timer
    firing. Oops.

commit 0f13c4b95caa23ef19eae9454d034d5a881a7e20
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jul 5 20:03:57 2019 -0700

    wip: zero timer value when move's been made

    Used to actually set the timer value to 0 when move was made, and
    DupeModeTimer expected that. So zero the stored value before returning
    it IFF move's been made already.

commit 83761f9228828fa0ff51bd7595059912e76414bc
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jul 5 19:48:29 2019 -0700

    wip: add pause button to notification

    Make it easier to discover pausibility by adding pause button to
    always-on notification. Implemented by opening the game and then within
    it the Pause confirm alert, which required passing a boolean Extra
    through from the launch intent to the one passed into BoardDelegate.

commit 6e543978b1ab132b8f95ae756301555f6267b037
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jul 5 14:31:43 2019 -0700

    wip: fix to redraw timer when only turnDone changes

commit b3c79de07e9eeb2bbaed04ff9a46b91fb927fe3f
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jul 5 13:36:06 2019 -0700

    wip: fix compile

commit d293864cff6d20197703ccadaa9f75b91e634004
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jul 5 11:43:13 2019 -0700

    wip: show timer when paused, and dim when turn done

commit 9c25d5a79e39fad12054be0be3f3d33a569270a9
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jul 1 21:01:09 2019 -0700

    wip: save separate excuses for pause and unpause

commit 9dfc00f4ff462a949ac453680ce160d436da430e
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jul 1 21:00:20 2019 -0700

    wip: invoke pause stuff via tap on timer

commit e80d443cf9583ab388a5b077dbb37d0ce024e2c1
Author: Eric House <xwords@eehouse.org>
Date:   Sun Jun 30 20:39:17 2019 -0700

    wip: pass name with pause info for better notification

commit 511b319643482ef459b793cc37c6fefd585c18c1
Author: Eric House <xwords@eehouse.org>
Date:   Sat Jun 29 11:50:40 2019 -0700

    wip: improve pause/unpause confirm dialog

commit e63fc004c830f96ad87d29d26de55f9429a098e1
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 28 21:45:17 2019 -0700

    wip: pass just the message. Let client package it.

commit dc79c7698a3b810bb94c4c6b732aa1e470953887
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 28 21:41:24 2019 -0700

    wip: trigger notifications etc on pause change

commit 6654053dd9640b1c79830cfd2ccff6ee117d8bd6
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 28 21:18:13 2019 -0700

    wip: missing files

commit 9579766643a0b939b0ebccd6b94fc1cace3f1a1a
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 28 21:15:58 2019 -0700

    wip: pass explanatory message with [un]pause

commit 1b91ad47910e4f4e0e2bba06d72097e4e83013a5
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 28 15:28:55 2019 -0700

    set dbname in build.gradle

commit c6c8ace0404f4a39214f294d3a85634d0db2080c
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 28 10:00:25 2019 -0700

    fix crash on initial install

    uninitialized variable

commit b0bcec10a896532d3439b4045e3406c1f361477b
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 27 13:35:30 2019 -0700

    wip: fix too-frequent dupe-game checking

    Do it all on a a background thread, and never process a game that was
    added for processing while being processed. Fixes re-opening because we
    just changed it, but may miss changes that matter.

commit 5f327d2eeabd8761691439c77db74f45514a0bf9
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 27 11:10:14 2019 -0700

    wip: progress on timers

    Mostly fixing DupeModeTimer to do less on main thread.

commit 847773f19b803626e56e4ee44a5f77ba225a487b
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 27 07:14:13 2019 -0700

    use macro for callbacks (as elsewhere)

commit ff6a7430db4bb01e77b1f32efde801872995d709
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 26 22:34:34 2019 -0700

    wip: transmit [un]pause to other devices

commit e8138431307763ffee8c8cba49cc00f6c36b3fa8
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 26 17:15:55 2019 -0700

    wip: more timer tweaks

commit 7431f5b4ddb16ff3b646409f8a0c62c43d864810
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 26 15:01:04 2019 -0700

    wip: fix assignment to wrong variable

commit fc703b6072d2dd7066e5bc9f6708b5b5d9aa11f9
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 26 14:41:50 2019 -0700

    wip: wire up [un]pause menus in Android board

commit 0e53fbfcbe5bf8e4a1253e45a12b9b5a5fe1e5ad
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 26 11:09:19 2019 -0700

    wip: pause/unpause without communication

commit 571200bebedb7df5f7193996a0db46ba6b05d1b6
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 26 10:56:09 2019 -0700

    wip: start adding [un]pause support

commit dbe25a2a09beae6241cd59b322f29e532094a7ae
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 26 10:07:24 2019 -0700

    wip: fix to work when timer not set

commit 6a58736eae4948c4245f7154e9e54a53ab2a39e9
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 26 09:53:29 2019 -0700

    wip: show tiles face-up in history for dup-mode

    No point in hiding them when everybody has the same.

commit 0b80a9ddfdcefdade0cf882cd4cd5b21ee4a5825
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 26 09:47:19 2019 -0700

    wip: don't draw paused (0:00) timer in duplicate mode

    Required passing in a new boolean

commit 1e94137e670bef7ecda614d3b513c6c065245704
Author: Eric House <xwords@eehouse.org>
Date:   Tue Jun 25 19:16:40 2019 -0700

    wip: adding timers

    interpret the existing timer value as per-move, counting down to 0. When the timer fires, commit and send moves for all local players.
    On Android, show notifications for games where a timer's running and nothing's been committed yet. Very rough, and somehow broke the
    python test script for duplicate games.

commit 61b81b820afe4e7c30234d0c6de428fcc41e2a70
Author: Eric House <xwords@eehouse.org>
Date:   Tue Jun 25 16:40:14 2019 -0700

    fix crash closing app when timers enabled

commit d456444e33bdcf5b151e250a8afd536f52f0d362
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jun 24 12:23:33 2019 -0700

    assert thread is same for map and unmap

    It'll be a while before I'm comfortable moving this to main branch

commit c35de13cbaeb001d743bbfa00f6a95c16eb3a6fc
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jun 24 12:15:40 2019 -0700

    add refcount on thread->env mapping

    Just as a safeguard to ensure I'm not removing something I'll want
    later. There appears to be no attempt at this point to use a stacked
    protocol -- attempts to add what's already there are just dropped -- so
    actual refcounting isn't working now. But if I double-remove I want to know.

commit a43b811c3343c1b393c707197a59dc3c7c52d7ac
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jun 24 09:32:36 2019 -0700

    fix breakage from backport and rebase

commit 5dd2cf2a6209a6902ad7697b8831dfb998af42a8
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jun 24 09:13:17 2019 -0700

    add timer to gtk's new-game dialog

commit 6fbb0522d65d11752da8170511e78775fc5c16ea
Author: Eric House <eehouse@eehouse.org>
Date:   Sat Jun 22 20:29:26 2019 -0700

    tweak text

commit 9a4bf15f39e50eca71b489a771294b06787eba88
Author: Eric House <eehouse@eehouse.org>
Date:   Sat Jun 22 08:56:27 2019 -0700

    make all config spinners use same styles

    One had a label. How all do, and styles make them the same.

commit c9bf3b9d66cf4bf57fd8ab2a8311165a22ccfc5d
Author: Eric House <eehouse@eehouse.org>
Date:   Sat Jun 22 08:23:35 2019 -0700

    make label-plus-timer-setting single-line

commit ab47ad09612da9b5cad6e450ffedb3c51357431a
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 14 16:32:57 2019 -0700

    wip: specify smaller size to avoid wrap on some phones

    No idea if this will be enough. Or if just saying "one-line" would work
    better.

commit 18f60f13c11c5c87bb1cb89a34430bce4372f937
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 14 15:08:51 2019 -0700

    wip: fix false dup-mode tag in games list

    The layouts are reused, so it needs to be hidden for the non-dupe case
    in case it represented a dup-mode game before and the tag was revealed.

commit 4c77db51f3ab618375d1b4b709d4ce5492ce7e5f
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 14 14:50:15 2019 -0700

    fix listing of Hex language (not dup-specific)

commit df2006279f5203b28fae46f2cae5a99f83e80652
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 14 11:48:07 2019 -0700

    wip: fix div-by-zero when all games are duplicate

commit a13d2c630b0b5a78048663b77051e29855ad012d
Author: Eric House <xwords@eehouse.org>
Date:   Fri Jun 14 10:30:45 2019 -0700

    wip: store scores in as many bits as largest requires

    breaks storage format!

commit e1acb19d7de8b9f65f5727cd7b415dc6a05e5a1e
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 13 20:26:50 2019 -0700

    wip: reduce scores correctly in dup-mode after undo

commit c8783625b72b2469013db4ffbe33ce6f2bc129c0
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 13 18:26:15 2019 -0700

    wip: fix tiles not being sorted after undo

    I'm doing this in the model where there's no setting to prevent
    sorting. Figure undo's a violent enough change nobody will care.

commit 2a5f76e86a357194c46d7f41bf64fd8d9c238b62
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 13 17:49:00 2019 -0700

    wip: inval tray when copying from DUP player's

    Fix failure to correctly draw current tray contents after replacement
    based on winning dup. move.

commit d93ae745a011b22dd1970039577537a0b0162103
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 13 17:13:17 2019 -0700

    wip: mark gameslist items with "dup" if in dup mode

commit 5ab01db8227f16641f18b2dbe09decc5f1a10476
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 13 10:55:40 2019 -0700

    wip: correct move count display in dup-mode case

commit bcff165e45eb0d347303b581a882118a0c1efbf8
Author: Eric House <xwords@eehouse.org>
Date:   Tue Jun 11 15:29:30 2019 -0700

    wip: fix crashes using word-lookup

    Assertions about dup mode and pending plays being legal words were wrong
    given how commitTurn() was used building a temp model inside
    model_listWordsThrough().

commit a3eb0723987b6abf36f5bfa9b1536ee13fd12ccc
Author: Eric House <xwords@eehouse.org>
Date:   Sun Jun 9 14:43:28 2019 -0700

    print average scores at end of run

    Should really be done separately by number of players, as non-dup games
    with more players will have lower scores as each has fewer turns.

commit f764362e435d644ee1014e22aba7075452c54558
Author: Eric House <xwords@eehouse.org>
Date:   Sun Jun 9 10:30:26 2019 -0700

    wip: notifiy turn change listeners in DUP case

    Fixes occasional failure to update Exipration display in game list items
    when a move's made.

commit 4cb91d72259d7b3190205cc93974ad1052c8d883
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 22:16:23 2019 -0700

    wip: don't cache variable locally

    For some reason it's not set on K's phone. This is safer: what's always
    worked, and it's late....

commit d78fee9a43cf0f6019f6a9494edc4a0573f6317d
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 19:07:11 2019 -0700

    wip: move status strings into resources

commit f943a8ca280da3dce0b843a14fbed307814347e0
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 18:43:56 2019 -0700

    wip: add status alerts for dup state transitions

    So users know what's up, add not-again alerts when server gets moves but
    can't yet act and when client sends moves.

commit 61bc587d656b47b194306ae9c6f10dc6a50878c7
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 13:03:54 2019 -0700

    wip: create local copy of inDuplicateMode var

commit 5b37bb2cd45ca281f410487d63a328eb80b518d9
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 12:38:00 2019 -0700

    wip: fix misplaced assert

commit dddcd5c073f4ee55d2367728381ef400faa6bc0e
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 12:08:39 2019 -0700

    wip: fix non-dup-mode scores and enable undo

commit 09848e3a85635238df9ebc7b0f2c480c4f2db02a
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 11:16:05 2019 -0700

    wip: list all players in a tie

commit 9d87087924fec2d0262ecc1ee2d3bb7d82d3c4c2
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 10:58:40 2019 -0700

    wip: better last-move explanations

    on android and linux. Required passing an array through the JNI which in
    turn encouraged some refactoring.

commit 57b8c65de433cd694d978726257dda07d5918cef
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 10:22:21 2019 -0700

    wip: use only one ASSIGN in duplicate mode

    They're otherwise all the same, and the other types all have
    playerNum == DUP_PLAYER, so let's be consistent.

commit 0d50b662a1290a5e58ee6229e1f9ad41de1eb5f3
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 08:47:59 2019 -0700

    wip: call assertSorted() before scoring

    the place that was the original problem

commit 78fc93e19658eb015ebb546e6bc3190a470bc2e5
Author: Eric House <xwords@eehouse.org>
Date:   Thu Jun 6 08:43:31 2019 -0700

    wip: fix so MoveInfo tiles always in order

    Display of last-played move didn't work for duplicate case because
    scoring assumes sorted tiles. So always sort, and assert sorted when
    writing to and reading from stream.

commit 882c7ff9d60a5d5c79c6c35b54d9d84d19912d4e
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 5 08:58:44 2019 -0700

    wip: script progress shows dup- vs non-dup-mode

commit 7b4bf585d4bdc3d77d858289f9c043552a41d027
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 5 08:18:19 2019 -0700

    wip: allow mix of dup- and non-dup games in test script

commit 874b2bafc2b466f2bd2086a239942a350b93f1dd
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 5 08:03:35 2019 -0700

    wip: work around misunderstood NPE (not dup-only)

commit 185a6d374fc49a955bbea90e086fd1570d023627
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 5 08:03:14 2019 -0700

    wip: cleanup and add debug/logging util

commit a2a8dfcbd30d53bdac170e057605a683f3f30323
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 5 07:58:14 2019 -0700

    wip: don't exit engine when checking tray in dup mode

    Android tends to abort the search because it has UI events
    unprocessed. I'm hoping it's generally so quick that this is ok. If not,
    I'll need to be more clever, e.g. adding an option to end the search
    after finding only one move rather than the best move.

commit 44c7528995327c9653dc69f60986f18442e232de
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 5 07:47:04 2019 -0700

    wip: fix broken compile

commit 1bbc1607914993565c86d8b86da78b490e08d3f4
Author: Eric House <xwords@eehouse.org>
Date:   Wed Jun 5 07:18:24 2019 -0700

    wip: fix pool having too many tiles when engine busy

    Bad loop structure meant I exited only after replacing in pool tiles I
    was actually keeping.

commit 021f5afc8d4a871d42aa619be02b80fab7e2415c
Author: Eric House <xwords@eehouse.org>
Date:   Tue Jun 4 19:31:34 2019 -0700

    wip: don't include number of players figuring pass count

    otherwise we wait too long for duplicate mode game to end

commit 1294b3bb0a4272e0bfb87f81ef5f9fe957d78b2e
Author: Eric House <xwords@eehouse.org>
Date:   Tue Jun 4 19:30:41 2019 -0700

    wip: log tile sets in and out

commit a01c50405e1edcfba4bb2fc89f4df0801226f5d5
Author: Eric House <xwords@eehouse.org>
Date:   Tue Jun 4 19:29:32 2019 -0700

    wip: no longer generate trades randomly

commit aeae0164c3c7e940430d72c000e2a66baf5f1dd5
Author: Eric House <xwords@eehouse.org>
Date:   Tue Jun 4 19:19:06 2019 -0700

    wip: figure bits-per-tile correctly

commit cb3bb8d55b9cae577941ab8707a91566f42a14f9
Author: Eric House <xwords@eehouse.org>
Date:   Tue Jun 4 09:12:52 2019 -0700

    log service stalls that don't trigger notification

    I'm seeing RelayService never get scheduled, and need to see something
    in the logs.

commit a8e0b43d004b2556ab4b22ab52be0ad7e3ddb45d
Author: Eric House <xwords@eehouse.org>
Date:   Tue Jun 4 08:52:49 2019 -0700

    wip: flag dup-mode games and nuke all on demand

    Add a bit to a summaries table field so dup-mode games can be
    identified. Add disabled code to nuke them all without attempting to
    open, something that still needs doing on occasion.

commit 4e4bcd5d4590d0b429405a6a0a5de10f1a29689d
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jun 3 17:39:21 2019 -0700

    wip: get rid of new move types

    It's enough to know whether we're in duplicate mode at runtime, as
    confirmed by the assertions from the last commit.

commit 7343ba3de1941a2b9d8fcd196506c9f62acbfe91
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jun 3 12:10:35 2019 -0700

    wip: assert new move types are redundant

    Looks like I don't need them: I can know whether I'm in duplicate mode
    or not and interpret them appropriately. This commit is to check; next
    will remove the types.

commit 07ae965094c720ebb71b2dd6c5e9a6facf854888
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jun 3 11:23:38 2019 -0700

    wip: don't dup-trade when no tiles left in pool

    and don't count dup-trade as a pass when deciding whether to end game.

commit b8cbfd0149f9c8e9854ae15dddc8328832f7d8a0
Author: Eric House <xwords@eehouse.org>
Date:   Mon Jun 3 11:00:38 2019 -0700

    wip: trade when nobody can move

    Add a new move type, duplicate-trade. Generate and transmit one of those
    when none of the submitted moves scores any points. And for testing,
    randomly do it in DEBUG builds occasionally (should likely be a param
    passed by the test script instead.) Still generates a very few
    assertions run from the script, but worth snapshotting still.

commit 41f0258619a1f3ab72abd3d908d0b6cf2f999978
Author: Eric House <xwords@eehouse.org>
Date:   Sun Jun 2 10:09:26 2019 -0700

    add prefs settings to unhide dup mode and for new-game default

    For now, it should be hard to stumble onto it, so add a debug-only
    setting so that all options are hidden by default. And so if you are
    using it it's easier to use, add a new-game default setting (itself
    hidden at first via the above.) Eventually I suspect it'll be easier to
    find for French-localized devices.

commit e152b407005e837eec4fe1f6ad552f55c157d877
Author: Eric House <xwords@eehouse.org>
Date:   Wed May 29 10:03:13 2019 -0700

    cleanup

commit 4439d8c3ea786b64dde554a25c62379bbea8347d
Author: Eric House <xwords@eehouse.org>
Date:   Tue May 28 06:54:17 2019 -0700

    fix obscure NPE (not duplicate-specific)

commit 4c5b1fc25d74f0ab40072f0d1987234e78b05569
Author: Eric House <xwords@eehouse.org>
Date:   Tue May 28 06:44:57 2019 -0700

    wip: fix NPE setting title too early

commit cc06a3df70157e3fd4c5b7f12d3adc8cfb87aa1c
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 27 20:12:14 2019 -0700

    wip: fix crashes and stalls script found

    I was using a non-local player's model as scratch then failing to fully
    update it before loading the winning tray in.

commit 7010cd60af70965ac106072ca2eed91536c746d5
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 27 14:38:12 2019 -0700

    wip: add strings where test script can find them for dup games

commit 1349d300b74168e2cae3c564fcbcec6fb28264c3
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 27 14:36:44 2019 -0700

    wip: fix assert when no tiles in move

commit 8a789ef9c32d4d90ef7f054dc8d863902edc34eb
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 27 08:55:03 2019 -0700

    wip: mark duplicate games a bit

    Add "(dup.)" to game title and new string to the commit confirm alert.

commit 4ac09cf8daf8752106d1edf9a90e0f12fe3bc80a
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 27 08:51:39 2019 -0700

    wip: fix tray-check bugs

    Needed to run the engine against the tray of the winning move, even if
    it wasn't local. Engines haven't existed for non-local players before so
    some assertions weren't happy.

commit 99abae4d19383afe25a9fbe57960ec0f8530f49e
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 27 08:11:13 2019 -0700

    fix to compile on Android

commit 22a58978dd1a6d851a5f92557928d5418d42a57a
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 27 06:53:55 2019 -0700

    fix breakage from too-eager refactoring

commit d2f1a8d7c2c90e94bc00b170d69faa6f9b3e69e1
Author: Eric House <xwords@eehouse.org>
Date:   Sun May 26 19:51:21 2019 -0700

    wip: refetch new tiles if current tray doesn't allow any moves

commit c4c916c9f96231d9a2fd085df1aef8b54237ab4f
Author: Eric House <xwords@eehouse.org>
Date:   Sat May 25 13:34:24 2019 -0700

    wip: add logging trying to catch stall

commit 8355236bdc5b34e5a58594dfec982cf0cd3daa8a
Author: Eric House <xwords@eehouse.org>
Date:   Fri May 24 06:54:04 2019 -0700

    wip: include dupMode in BT and SMS invitations

    Add it to the json and url read/write code so other invitation types
    also work.

commit b8fb1d4c89285e0516aa55f830954dac16dbe7cc
Author: Eric House <xwords@eehouse.org>
Date:   Thu May 23 20:34:33 2019 -0700

    add option to have all robots at full smartness

    as a test of duplicate, makes all scores the same

commit e653ad39284c5ba071e74a521a91d5bb21fbe320
Author: Eric House <xwords@eehouse.org>
Date:   Thu May 23 20:33:55 2019 -0700

    wip: fix method-name parens assert printf

commit fca3c06ff3007c3095128b27040d87e82eddf79b
Author: Eric House <xwords@eehouse.org>
Date:   Thu May 23 20:33:37 2019 -0700

    wip: remove some logging

commit 1a89b105d34ba0af2048b7693a3fdbeda7783070
Author: Eric House <xwords@eehouse.org>
Date:   Wed May 22 19:43:52 2019 -0700

    wip: add ability to run test app in duplicate mode

    Doesn't come close to passing :-(

commit 308baf2a8b2cbdc1212cff17811ee6f750c67099
Author: Eric House <xwords@eehouse.org>
Date:   Wed May 22 16:47:20 2019 -0700

    wip: report scores when move over (sorted by score)

    Still need to made the strings localizable.

commit 2db4bdceaba990f34dd32afb16f9d4bd04fd8cdc
Author: Eric House <xwords@eehouse.org>
Date:   Wed May 22 13:57:45 2019 -0700

    wip: fix problems opening old-version move stacks

    Since the stack's not rewritten each time it's saved (moves stay in the
    stream) the versioning scheme can't work. Instead use an extra bit to
    store whether the stack uses the new format requiring an extra bit for
    moveType.

commit 1df8e1754e35b784be2070c8416c6f5038fa65a7
Author: Eric House <xwords@eehouse.org>
Date:   Tue May 21 18:48:31 2019 -0700

    wip: fix end-of-game message and initial turn assignment

commit 4548435b36e9f9165b66832b93707a0b7e00f876
Author: Eric House <xwords@eehouse.org>
Date:   Tue May 21 18:10:48 2019 -0700

    wip: UI doesn't need to always show the same turn

    Figure what "turn" it is based on what candidate moves have been
    reported locally. Fixes Android not showing games as needing attention
    on all devices.

commit 4a93f4b4528eabcef41bdfd67517bba4d1479407
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 20 21:37:22 2019 -0700

    wip cleanup

commit f8184783bc9a8914310c39c54084e5fe492694a7
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 20 20:26:08 2019 -0700

    wip: split method

commit 0d7d68737843017ecbc08dba87d881dabf7098ff
Author: Eric House <xwords@eehouse.org>
Date:   Mon May 20 19:49:33 2019 -0700

    wip: update scoreboard and end game correctly

commit d5d95424314b2e18c95f0a43eaa1759b3a7c6b5a
Author: Eric House <xwords@eehouse.org>
Date:   Sun May 19 21:15:56 2019 -0700

    wip: don't allow trade in dup mode

commit 8b102c0a8e5c0b39cc5b29aea16a5985a0e402c6
Author: Eric House <xwords@eehouse.org>
Date:   Sun May 19 21:09:30 2019 -0700

    wip: get building/limping along on Android

    parity with GTK, basically.

commit 16cfc6b0bb1bb01ee801ccec2116eac94e16fdab
Author: Eric House <xwords@eehouse.org>
Date:   Sun May 19 17:57:45 2019 -0700

    wip: break point tie based on word length

commit 66dce87d98dce21d7616cc79c32ee88e8fbbb537
Author: Eric House <xwords@eehouse.org>
Date:   Sun May 19 17:12:28 2019 -0700

    wip: fix networked games

commit 33ba891082a9d59a90115357194841f8fa0532f8
Author: Eric House <xwords@eehouse.org>
Date:   Sun May 19 16:28:46 2019 -0700

    wip: fix problems updating model

    Simplest test case now works: two-player one-device game in duplicate
    mode can make a bunch of turns. Save/restore of game works. All on gtk;
    Android likely doesn't build.

commit 33080c1014e40af0858a1d89168ffd52d1efd400
Author: Eric House <xwords@eehouse.org>
Date:   Sat May 18 10:38:37 2019 -0700

    wip: tweak commit of dup move

commit 65f06a216441624f811d1abb2e31955fb979b5c5
Author: Eric House <xwords@eehouse.org>
Date:   Sat May 18 10:23:08 2019 -0700

    wip: correctly update board with dup move

    and fix crash when move stack created with wrong version

commit 4be132686b64cf6c49e541ad7df76bb7b753b3ce
Author: Eric House <xwords@eehouse.org>
Date:   Sat May 18 09:10:31 2019 -0700

    wip: update scores correctly when loading stack

commit 107f7b2a6708c1129f8fd67dc2deecb9e19a0606
Author: Eric House <xwords@eehouse.org>
Date:   Sat May 18 08:40:29 2019 -0700

    wip: add dupe-mode move to move stack

    Add new move entry type including a move and new tiles plus the scores
    for all players. Reflect move and tiles when loading from file. Next:
    figure out what to do with the scores.

commit 6c05fe87d3ddae3e74edf0621df40dd083c9bebb
Author: Eric House <xwords@eehouse.org>
Date:   Fri May 17 10:20:18 2019 -0700

    wip: identify highest-scoring word

commit 4e498f754d637a15c63ec8498bad35c58f348a45
Author: Eric House <xwords@eehouse.org>
Date:   Thu May 16 21:34:04 2019 -0700

    wip: transmit client dupe-mode moves to server

    and fix failure to get dupe flag into server on client side

commit 225b0f579d0c9aae85f439739d686b8afda7b6e3
Author: Eric House <xwords@eehouse.org>
Date:   Thu May 16 19:54:41 2019 -0700

    wip: invitation works to assign tiles

    Include in nli sent across that we're in DUPLICATE mode. When sending
    and receiving assigned tiles in that mode, send only one set and remove
    from pool only once. But: games don't always connect, which might or not
    be due to these changes. Next: handle commit by sending the move but not
    a new tray.

commit 7e7b5d65e2fd4ccaf6657d88c9c9e1c59adc8c4f
Author: Eric House <xwords@eehouse.org>
Date:   Thu May 16 19:46:25 2019 -0700

    wip: remove excessive logging

commit 8afc11dc54c5aa145066729594fb741cf9e51c2c
Author: Eric House <xwords@eehouse.org>
Date:   Thu May 16 08:15:20 2019 -0700

    wip: accumulate local turns

    Track whether players have committed turns yet. Once all have
    notice (but do nothing yet).

commit d7697fba6f7bffc37d2ee09d9b397c1bb04cdf4b
Author: Eric House <xwords@eehouse.org>
Date:   Wed May 15 22:24:04 2019 -0700

    wip scoreboard shows it can be multiple players' turns

    modify how scoreboard is drawn. next: let players commit until all are
    done

commit eaa551d1d587fba90bb6cf960b4321949d173ef5
Author: Eric House <xwords@eehouse.org>
Date:   Wed May 15 20:05:25 2019 -0700

    wip: add duplicate checkbox and assign same tiles to all

    next: make it everybody's turn until it's nobody's. This is all in
    standalone mode for now.
2020-01-30 16:00:56 -08:00
Eric House
752e3ff3e8 remove use of --slow-robot
breaks things for reasons I need to debug later
2020-01-29 20:40:14 -08:00
Eric House
3f5b9f5992 get "sms" games going on curses 2020-01-29 20:40:14 -08:00
Eric House
ca8c84b9ae make it possible to run without an open game 2020-01-29 20:40:14 -08:00
Eric House
f60914ac85 include redirection in script 2020-01-29 20:40:14 -08:00
Andrea Hernandiz Lopez
cacece02b2 Translated using Weblate (Spanish)
Currently translated at 22.1% (172 of 778 strings)
2020-01-27 11:30:59 -08:00
Eric House
e91a66b48a cleanup 2020-01-26 22:21:32 -08:00
Eric House
9e09d9cd47 make alt-return like long-tap to get prev score
The hack to pass alt modifier with key might work for others, but for
now it's used in that one place.
2020-01-26 22:12:36 -08:00
Eric House
4bc39a0291 copy in some missing config 2020-01-26 21:00:05 -08:00
Eric House
db26f6baa7 fix keyboard nav not recognizing down-on-rem-text 2020-01-26 20:44:52 -08:00
Eric House
dd1e91301a add show-tiles; make cells square
draw will be responsible for wrapping stuff like Catalan's L-dot-L.
2020-01-26 07:53:12 -08:00
Eric House
a398cffaa5 fix some menus, hide others that don't work 2020-01-25 09:19:19 -08:00
Eric House
b78ad28d0e draw multi-type cell contents correctly
As long as it's not too long for the space! But the curses draw function
that knows how to measure the length-in-bytes of a multi-byte string
doesn't seem to be available to me. So pass -1 as the length and it'll
draw correctly out to the NULL terminator.
2020-01-24 21:57:35 -08:00
Eric House
b96c9cc438 fix flip 2020-01-24 09:22:49 -08:00
Eric House
598be04bef make curses app more like the rest
Lots of changes adding a games-list view to the app from which you
create new games, open and delete existing ones, etc. There's still
plenty that's unimplemented, but it's already more useful for testing
and development. Which is the point.
2020-01-24 09:05:16 -08:00
Eric House
9f0324f8ae remove assert firing in field
There must be some race condition. Better than crashing is to fail to
dispose a game's memory, which hopefully will be the effect here. I
don't understand how this happens to can't test.
2020-01-14 08:48:15 -08:00
Eric House
4ee1a2bab2 up strings for new release 2020-01-13 12:30:30 -08:00
Eric House
6386aef512 cleanup -- oops 2020-01-13 12:15:55 -08:00
Eric House
7e570cff2c use make to avoid reprocessing res_src strings.xml files
They never change, so use make's understanding of dependencies.
2020-01-13 12:10:40 -08:00
Eric House
3f78263f54 Fix board not drawing after chat dismissed
A race condition meant the dict chars never got set, which meant no
drawing.
2020-01-13 09:28:02 -08:00
Eric House
2cd94671fd cleanup, e.g. add @Override, found while debugging 2020-01-13 09:15:44 -08:00
Eric House
97bec5ca73 new script (mostly for use inside UserLAnd) 2020-01-12 12:12:55 -08:00
Eric House
d6cf1d2f95 add comment about work needing doing 2020-01-11 20:44:12 -08:00
Eric House
9bb6f8c390 don't show NFC in network stats unless it's been used 2020-01-11 15:23:06 -08:00
Eric House
4fa1b3faf4 Don't join a game that's been idle for more than two weeks
The two weeks is configurable. But the idea is somebody creates a game
with a random name but it's never joined. Eventually the name is used
again and the first to connect joins the existing game that will never
progress. I could just prune from the DB, but this is less work ongoing.
2020-01-10 20:13:06 -08:00
Eric House
dfb33c01af remove some asserts from non-DEBUG builds
I don't want to be bitten by a default: Assert.fail() again.
2020-01-10 15:35:34 -08:00
Eric House
8291b70842 Merge branch 'android_branch' into android_translate 2020-01-10 14:03:12 -08:00
Eric House
a9a5cc14ca up strings for new release 2020-01-10 13:47:53 -08:00
Eric House
9b0d4cc88e Merge remote-tracking branch 'weblate/android_translate' into android_translate 2020-01-10 13:12:25 -08:00
Eric House
f7b312d3a5 up copyright: it's a new year! 2020-01-10 12:56:42 -08:00
Eric House
5874ccf5c2 up copyright: it's a new year! 2020-01-10 12:54:01 -08:00
Eric House
6417236505 add not-again checkbox to ask-phone-permission dialog
Otherwise if you're saying "no" you keep getting asked each time you
invite.
2020-01-10 12:43:25 -08:00
Eric House
e4bc2d99ed fix crash inviting via SMS/Text
Was asserting when NFC type came through. Bad.
2020-01-10 11:44:14 -08:00
Andrea Hernandiz Lopez
712b463ee9
Translated using Weblate (Spanish)
Currently translated at 20.4% (159 of 778 strings)
2020-01-10 20:21:25 +01:00
Eric House
2bfe91b6e8 Merge remote-tracking branch 'weblate/android_translate' into android_translate 2020-01-10 09:47:50 -08:00
Eric House
9406297c03 transmit sms phone in nli (and hard-code port=1)
This fixes on gtk version being able to invite to an SMS game using
relayID. I don't know why not transmitting port is ok; maybe android
doesn't use the port or gets it some other way, e.g. it's hard-coded for
each variant.
2020-01-09 21:24:38 -08:00
Andrea Hernandiz Lopez
6df6350061
Translated using Weblate (Catalan)
Currently translated at 94.9% (738 of 778 strings)
2020-01-09 16:33:03 +01:00
Eric House
cdbf574c0e add new files device{c,h}
I've long wanted common code and state that outlast a single game. The
smsproto stuff is a step in that direction, but this file will be a
place for anything new. Starting, perhaps, with a mapping of deviceID ->
addressInfo (e.g. BT name or SMS number of opponent device) that will
let me stop duplicating that stuff in every game's comms state. We'll
see. It's guarded by a compile-time flag so I can play with in on the
Linux version until ready.
2020-01-08 11:20:51 -08:00
Eric House
68890cdf86 don't pass relayDevID unless inviting using relay
And do some cleanup to make things more clear
2020-01-08 11:20:51 -08:00
Eric House
90903c24da Merge remote-tracking branch 'weblate/android_translate' into android_translate 2019-12-30 22:53:08 -08:00
Eric House
ef9a148eb4 Merge branch 'android_branch' into android_translate 2019-12-30 22:40:38 -08:00
Eric House
1eb3c7e2e0 Write relayID conditionally so we can drop it later 2019-12-30 22:26:07 -08:00
Eric House
864648c5b9 up changes for new release 2019-12-30 22:15:51 -08:00
Eric House
c663d33f88 fix string script to detect mismatch of format specifiers
Crash due to typo introduced by Weblate made me realize I wasn't running
the script that ensures translated strings have the same set of format
specifiers as the English -- which might not be strictly necessary, but
it's safer to enforce it for now. Moved a few remaining %s to %1$s style
while at it.
2019-12-30 22:09:23 -08:00
Eric House
278275a9cb get rid of pixelation using svg instead of png
There was only one size of png for the net status arrows. Now there are
svgs that generate the whole range. Also set color programatically to
avoid having to maintain four.
2019-12-30 13:50:24 -08:00
Eric House
2268d48fe2 remove dead code (old GCM stuff) 2019-12-30 10:53:27 -08:00
Eric House
15239d4a6c Control showing message count via a prefs checkbox
Off by default on non-DEBUG builds, but still available.
2019-12-29 08:33:38 -08:00
Eric House
381efc9ddb refactor to avoid ClassNotFound crash where SDK<19 2019-12-29 06:45:41 -08:00
Eric House
42da9b1ebf don't allow devid of 0 2019-12-28 09:43:01 -08:00
Eric House
d4d4693def makefile for new French wordlist 2019-12-28 09:01:10 -08:00
Eric House
8b06cde971 up strings for new release and cleanup 2019-12-28 08:35:49 -08:00
Bernard Massot
329428c791
Translated using Weblate (French)
Currently translated at 95.5% (743 of 778 strings)
2019-12-27 23:21:15 +01:00
Eric House
29480d2867 use the right variable for array access 2019-12-26 09:29:06 -08:00
Eric House
85fd353829 initialize variable flagged by valgrind 2019-12-26 09:28:58 -08:00
Andrea Hernandiz Lopez
170465077f
Translated using Weblate (Spanish)
Currently translated at 12.0% (93 of 778 strings)
2019-12-24 16:21:10 +01:00
Eric House
ae0d2facb4 remove debug option that no longer works
(NFC send-to-self would be very different now.)
2019-12-23 09:52:56 -08:00
Eric House
0153928bcd support sending invites and moves via NFC
Use low-level NFC, a combination of emulated card and reader mode, to
work around Google's removal of "beaming" support from Android 10. App
emulates a card by declaring support in its AndroidManifest. When a game
is open that has data to send, it goes periodically into read mode. If
two devices are touched while one is in read mode and the other isn't,
they handshake and open a connection that should last until they're
separated. The devices loop, sending messages back and forth with or
without data (as available.)
2019-12-23 08:45:55 -08:00
Eric House
ccaa3c67fc use enums for table names
Cleans up the code a bit, adding type-safety where it probably wasn't
needed but also letting me iterate over all tables. Not being able to do
the latter had allowed db-replacement code (useful only for debugging,
probably) to get out of date.
2019-12-23 08:25:43 -08:00
Eric House
97a80e7084 clean up email invite string
The tap-here link and attachment weren't working, so remove them.
2019-12-22 23:19:01 -08:00
Eric House
dae24f55d4 fix reported NPE: try 100ms to get lock then give up
I suspect it's really rare to fail to get the lock when the game's not
open, but hope that trying 100ms before giving up will make failure to
save rare enough to be ok.
2019-12-22 23:19:01 -08:00
Eric House
7b30921190 fix ClassCastException, and fix moving to new group
(Fixing the latter fixed the former.)
2019-12-22 23:19:01 -08:00
Eric House
47d4d51876 pull in stream changes from dup branch
No impact now, but I want to change the game stream format to add
deviceID somewhere and that won't merge with these other changes.
2019-12-22 23:19:01 -08:00
Andrea Hernandiz Lopez
7b53c48a7c Translated using Weblate (Spanish)
Currently translated at 11.4% (89 of 778 strings)
2019-12-22 23:19:01 -08:00
Andrea Hernandiz Lopez
cdd162b4c7 Translated using Weblate (Spanish)
Currently translated at 9.3% (72 of 778 strings)
2019-12-22 23:19:01 -08:00
Andrea Hernandiz Lopez
cfa8222762 Translated using Weblate (Spanish)
Currently translated at 3.2% (25 of 778 strings)
2019-12-22 23:19:01 -08:00
Hosted Weblate
4c60199fb0
Merge branch 'origin/android_translate' into Weblate. 2019-12-21 06:23:22 +01:00
Andrea Hernandiz Lopez
540e16b121
Translated using Weblate (Spanish)
Currently translated at 11.4% (89 of 778 strings)
2019-12-19 18:23:35 +01:00
Andrea Hernandiz Lopez
aac9597b2c
Translated using Weblate (Spanish)
Currently translated at 9.3% (72 of 778 strings)
2019-12-18 16:21:12 +01:00
Eric House
764cefcddd debug only: show pending msg count in game list item 2019-12-16 06:44:13 -08:00
Eric House
2a54f6f176 cleanup: make linux more like android
Wasn't using the game_receiveMessage() utility
2019-12-14 10:55:05 -08:00
Andrea Hernandiz Lopez
6d6750472f
Translated using Weblate (Spanish)
Currently translated at 3.2% (25 of 778 strings)
2019-12-14 13:21:20 +01:00
Eric House
f22868e5f4 Merge branch 'android_branch' into android_translate 2019-12-13 11:35:54 -08:00
Eric House
d3f8120ab5 Merge remote-tracking branch 'weblate/android_translate' into android_translate 2019-12-13 11:32:02 -08:00
Eric House
84b3c65373 always print comms_stats (if DEBUG) 2019-12-12 22:02:30 -08:00
Andrea Hernandiz Lopez
76b26be359
Added translation using Weblate (Spanish) 2019-12-11 12:24:16 +01:00
Eric House
0493ad2ef8 cleanup (changed to debug and want to keep changes) 2019-12-10 21:10:21 -08:00
Eric House
c7ebe6e80e add debug-only pending-msg count to connstatus display
I'm bringing this in from another branch because it'll be useful for
debugging bluetooth problems.
2019-12-10 14:42:54 -08:00
Eric House
b7ef8935d8 cleanup 2019-12-08 15:43:25 -08:00
Eric House
d2871c92ba move compile-time constant into gradle file 2019-12-03 10:52:56 -08:00
naofum
ecfd6bacb6 Translated using Weblate (Japanese)
Currently translated at 100.0% (778 of 778 strings)
2019-12-03 08:45:40 -08:00
Allan Nordhøy
41b376e4b0 Translated using Weblate (Norwegian Bokmål)
Currently translated at 83.2% (647 of 778 strings)
2019-12-03 08:45:40 -08:00
Allan Nordhøy
49e6e679ed Translated using Weblate (English)
Currently translated at 100.0% (778 of 778 strings)
2019-12-03 08:45:40 -08:00
Allan Nordhøy
576f2f6858 Translated using Weblate (Norwegian Bokmål)
Currently translated at 83.0% (646 of 778 strings)
2019-12-03 08:45:40 -08:00
WaldiS
4dccfae5b2 Translated using Weblate (Polish)
Currently translated at 94.7% (737 of 778 strings)
2019-12-03 08:45:40 -08:00
Andreas Kleinert
74688322f4 Translated using Weblate (German)
Currently translated at 100.0% (778 of 778 strings)
2019-12-03 08:45:40 -08:00
Joan Montané
5055af5a39 Translated using Weblate (Catalan)
Currently translated at 95.1% (740 of 778 strings)
2019-12-03 08:45:40 -08:00
Allan Nordhøy
9c1f02d001 Translated using Weblate (Norwegian Bokmål)
Currently translated at 83.0% (646 of 778 strings)
2019-12-03 08:45:40 -08:00
Joan Montané
2d9e137600 Translated using Weblate (Catalan)
Currently translated at 93.2% (725 of 778 strings)
2019-12-03 08:45:40 -08:00
Estébastien Robespi
d530f87c77 Translated using Weblate (French)
Currently translated at 92.8% (722 of 778 strings)
2019-12-03 08:45:40 -08:00
Allan Nordhøy
2e45e65b6c Translated using Weblate (Polish)
Currently translated at 94.5% (735 of 778 strings)
2019-12-03 08:45:40 -08:00
Allan Nordhøy
d5a10f0f8c Translated using Weblate (Catalan)
Currently translated at 92.4% (719 of 778 strings)
2019-12-03 08:45:40 -08:00
Allan Nordhøy
84dd6385d0 Translated using Weblate (Japanese)
Currently translated at 100.0% (778 of 778 strings)
2019-12-03 08:45:40 -08:00
naofum
92afb08b28 Translated using Weblate (Japanese)
Currently translated at 100.0% (778 of 778 strings)
2019-12-03 08:45:40 -08:00
naofum
b1277869c1 Translated using Weblate (Japanese)
Currently translated at 89.6% (697 of 778 strings)
2019-12-03 08:45:40 -08:00
naofum
a4b0527bcd Translated using Weblate (Japanese)
Currently translated at 73.3% (570 of 778 strings)
2019-12-03 08:45:40 -08:00
Wee
e42bc6f262 Translated using Weblate (German)
Currently translated at 99.7% (776 of 778 strings)
2019-12-03 08:45:40 -08:00
Allan Nordhøy
03f72c6d1c Translated using Weblate (Norwegian Bokmål)
Currently translated at 82.8% (644 of 778 strings)
2019-12-03 08:45:40 -08:00
Allan Nordhøy
443a0bd2bd Translated using Weblate (English)
Currently translated at 100.0% (778 of 778 strings)
2019-12-03 08:45:40 -08:00
Andreas Kleinert
07b24ea821 Translated using Weblate (German)
Currently translated at 100.0% (778 of 778 strings)
2019-12-03 08:45:40 -08:00
Eric House
f4845efc3f don't include NFC in network status 2019-12-03 08:26:51 -08:00
Eric House
5fb08cd35f update changelog 2019-12-03 08:10:40 -08:00
Eric House
5fe46f275c communicate FCM deviceID to relay immediately
Don't wait for second connection! This makes new installs able to get a
game going much more reliably.
2019-11-30 20:24:43 -08:00
Eric House
2d81135487 set dbname in build.gradle 2019-11-30 19:49:29 -08:00
Eric House
ee9f3c36f8 fix crash opening older games
I'd forgotten that merely adding a new type changed the game's binary format.
2019-11-30 18:43:28 -08:00
Eric House
496ef73da2 cleanup and remove one bad assertion 2019-11-27 11:47:46 -08:00
Eric House
9373dce0df fix fcm_msg.py test script (force to take devid) Works! 2019-11-27 11:47:46 -08:00
Eric House
20e9754966 don't print NFC stats 2019-11-27 09:35:07 -08:00
Eric House
ced26e8e37 remove release-build-only warning 2019-11-27 08:44:09 -08:00
Eric House
8d1065ea75 up strings for new release 2019-11-27 07:32:49 -08:00
Eric House
7eaa466f78 add ability to send moves via NFC
You can now play an entire game via NFC. There's no UI though: big
question is how to make the feature "discoverable."
2019-11-23 10:53:51 -08:00
Eric House
1e7ae2b2ec fix lower->upper translation: tr didn't like my strings
For whatever reason, though emacs thought the lower- and uppercase
strings I was passing to tr were the same but for case two letters were
getting dropped. This lets tr figure things out itself.
2019-11-19 22:27:41 -08:00
Eric House
8da3c5fc68 add comms_getPending(), and refactor to implement 2019-11-18 09:26:46 -08:00
naofum
5045356e6e
Translated using Weblate (Japanese)
Currently translated at 100.0% (778 of 778 strings)
2019-11-18 13:04:30 +01:00
Allan Nordhøy
e73664355f
Translated using Weblate (Norwegian Bokmål)
Currently translated at 83.2% (647 of 778 strings)
2019-11-16 16:04:24 +01:00
Allan Nordhøy
40454f4b24
Translated using Weblate (English)
Currently translated at 100.0% (778 of 778 strings)
2019-11-16 16:04:24 +01:00
Eric House
58c3ab4e4a first cut at python version of dawg2dict
Perl version doesn't work and I don't remember enough of the language to
fix it.
2019-11-13 13:22:30 -08:00
Eric House
c5a8319fa8 fix comment 2019-11-13 12:32:06 -08:00
Eric House
611e046987 check for undefined variable 2019-11-12 09:08:08 -08:00
Eric House
c69ec52502 add comms stats to conn status display (DEBUG only) 2019-11-05 08:30:38 -08:00
Eric House
a35f0f7339 fix stall when sending chat
Oops. Old code doesn't mark chat messages as successfully processed.
2019-11-05 08:30:15 -08:00
Eric House
f8a84cbe0a adding missing DB field
Can't upgrade a game if the field's missing so just add it. Adding a
notion of versioning and upgrading isn't worth the effort.
2019-11-03 18:14:47 -08:00
Eric House
56fc359f42 fix counts/values for 'D' (thanks Peter) 2019-11-03 18:12:24 -08:00
Eric House
54e5ca361d remove unnecessary logging 2019-11-03 11:24:29 +00:00
Eric House
da7f84d683 fix log_hex format alignment 2019-11-03 11:24:23 +00:00
Allan Nordhøy
9bcc538cce
Translated using Weblate (Norwegian Bokmål)
Currently translated at 83.0% (646 of 778 strings)
2019-11-03 12:03:52 +01:00
Eric House
37ac29e65e always log hash failure 2019-11-03 09:34:18 +00:00
Eric House
e37220cbb1 add ability to upgrade app during game
This was in the .sh version of the script but not the .py. Delete the
former too BTW.
2019-11-03 09:30:32 +00:00
Eric House
685c8879c3 don't consider message received until it's processed
I think I'm seeing a bug where msg <n> is received, I record that I'm
now looking for msg <n+1>, fail to process <n> (perhaps because some
resource is temporarily unavailable?), and am now in a state where I
won't accept <n> when it's resent. This fixes this by only recording <n>
received after processing code has accepted it.
2019-11-03 08:35:56 +00:00
WaldiS
79a08a625f
Translated using Weblate (Polish)
Currently translated at 94.7% (737 of 778 strings)
2019-11-01 21:03:48 +01:00
Eric House
96ee5bec8c start adding logging specific to comms' windowing
(Hi from Santiago)
2019-11-01 07:22:56 -07:00
Eric House
96f4d2cfc0 don't offer NFC on Android 10, where it's broken. 2019-10-22 13:40:17 +02:00
Eric House
06b6afe612 use sdk 28 for real
requires dropping junit Assert and accessing an old Canvas method via reflection.
2019-10-22 13:40:17 +02:00
Eric House
bf37ab0fc1 use https now to fix broken updating 2019-10-22 13:39:14 +02:00
Eric House
a1a71df7c6 update Makefile for latest Catalan wordlist 2019-10-22 13:24:40 +02:00
Andreas Kleinert
b616849128
Translated using Weblate (German)
Currently translated at 100.0% (778 of 778 strings)
2019-10-17 19:52:46 +02:00
Joan Montané
df66d040a3
Translated using Weblate (Catalan)
Currently translated at 95.1% (740 of 778 strings)
2019-10-09 14:58:30 +02:00
Allan Nordhøy
0e968158c9
Translated using Weblate (Norwegian Bokmål)
Currently translated at 83.0% (646 of 778 strings)
2019-10-02 06:56:00 +02:00
Joan Montané
731b748790
Translated using Weblate (Catalan)
Currently translated at 93.2% (725 of 778 strings)
2019-10-02 06:55:59 +02:00
Estébastien Robespi
282250211e
Translated using Weblate (French)
Currently translated at 92.8% (722 of 778 strings)
2019-09-29 15:55:53 +02:00
Allan Nordhøy
32c03671a0
Translated using Weblate (Polish)
Currently translated at 94.5% (735 of 778 strings)
2019-09-29 15:55:52 +02:00
Allan Nordhøy
f8829e9bdb
Translated using Weblate (Catalan)
Currently translated at 92.4% (719 of 778 strings)
2019-09-29 15:55:52 +02:00
Allan Nordhøy
7d125a95e8
Translated using Weblate (Japanese)
Currently translated at 100.0% (778 of 778 strings)
2019-09-29 15:55:51 +02:00
naofum
9b04d4b90b
Translated using Weblate (Japanese)
Currently translated at 100.0% (778 of 778 strings)
2019-09-23 15:27:52 +02:00
naofum
de430bddb5
Translated using Weblate (Japanese)
Currently translated at 89.6% (697 of 778 strings)
2019-09-21 12:27:50 +02:00
naofum
e69d9bcab9
Translated using Weblate (Japanese)
Currently translated at 73.3% (570 of 778 strings)
2019-09-19 11:27:38 +02:00
Eric House
7fd366c2d9 avoid NPE when invite isn't only thing passed 2019-09-17 07:47:13 +03:00
Eric House
f12531e40b let cells be taller than wide too (take 2) 2019-09-10 16:40:50 +03:00
leela
e5570447a4
typo ellipsis, added
see [source](https://hosted.weblate.org/projects/xwords/android/source/review/?type=check%3Aellipsis)
2019-09-02 07:09:34 +00:00
Wee
947683eeab
Translated using Weblate (German)
Currently translated at 99.7% (776 of 778 strings)
2019-08-31 10:23:46 +02:00
Eric House
0b61a8bfb7 assert that valid message is handled
I suspect that messages are being dropped (in server) after being
recorded (in comms), causing the game to stall forever. So add an
assertion that it's not happening. Haven't seen it yet in a few hundred
games, but it'll be nice to be more confident.
2019-08-29 23:10:42 +03:00
Eric House
dccd582009 up API version to 28 (required soon) 2019-08-27 19:36:38 +03:00
Eric House
a872e7b7be remove x86 from release builds
I either remove it or add the 64-bit abi. Since it's only there to run
in the emulator let's just leave it in for DEBUG builds. If I need to
run a release build in the emulator I can add it back.
2019-08-27 19:33:40 +03:00
Eric House
40fd954bcd arm means two ABIs now 2019-08-27 19:33:25 +03:00
Eric House
fa889262f6 change version strings and update changelog 2019-08-24 17:12:12 +03:00
Allan Nordhøy
1fb0788eb3
Translated using Weblate (Norwegian Bokmål)
Currently translated at 82.8% (644 of 778 strings)
2019-08-22 08:23:41 +02:00
Allan Nordhøy
c64ec34eb9
Translated using Weblate (English)
Currently translated at 100.0% (778 of 778 strings)
2019-08-22 08:23:38 +02:00
Eric House
8c16d1e749 fix dialog not exiting when close button called
Need to use gtk_dialog_run(), not gtk_main()
2019-08-19 07:50:33 +03:00
Eric House
2a54c9ed20 fix Slovak makefile for new wordlist 2019-08-19 07:49:23 +03:00
Eric House
0960ed4963 remove bad assert
Can't connect to relay when laptop (emu case) or device has no network,
so stop asserting all the time on airplanes :-)
2019-08-10 06:10:08 -07:00
Andreas Kleinert
b1a0258b49
Translated using Weblate (German)
Currently translated at 100.0% (778 of 778 strings)
2019-08-09 22:22:50 +02:00
Eric House
2e4d3a1276 add source of current (dinky) Slovak wordlist 2019-08-08 09:57:40 -07:00
Eric House
b602f6fb3c Merge branch 'android_translate' into android_branch 2019-08-08 07:44:05 -07:00
Allan Nordhøy
04bd0df344
Translated using Weblate (Norwegian Bokmål)
Currently translated at 82.0% (638 of 778 strings)
2019-08-04 01:22:36 +02:00
Allan Nordhøy
f8743e56e7
Translated using Weblate (English)
Currently translated at 100.0% (778 of 778 strings)
2019-08-04 01:22:35 +02:00
Allan Nordhøy
bef208ee3b
Translated using Weblate (Norwegian Bokmål)
Currently translated at 81.5% (634 of 778 strings)
2019-08-01 07:10:56 +02:00
WaldiS
fcd5194062
Translated using Weblate (Polish)
Currently translated at 95.1% (740 of 778 strings)
2019-08-01 07:10:55 +02:00
Hosted Weblate
a102d1710a
Merge branch 'origin/android_translate' into Weblate. 2019-07-30 07:35:13 +02:00
Elizabeth Sherrock
ca56f18608
Translated using Weblate (Chinese (Simplified))
Currently translated at 5.4% (41 of 764 strings)
2019-07-30 07:35:12 +02:00
WaldiS
6291a7fde7
Translated using Weblate (Polish)
Currently translated at 92.5% (707 of 764 strings)
2019-07-30 07:35:09 +02:00
WaldiS
e36883b1f6 Translated using Weblate (Polish)
Currently translated at 90.6% (692 of 764 strings)
2019-07-24 18:46:51 -07:00
Eric House
489ac08289 remove logging 2019-07-24 07:49:29 -07:00
Eric House
a85cfef82d add missing .deb file 2019-07-24 07:49:03 -07:00
WaldiS
b0ea3a3be8
Translated using Weblate (Polish)
Currently translated at 90.6% (692 of 764 strings)
2019-07-21 23:06:35 +02:00
Eric House
597bcebefa first set of EditTexts getting 'X' clear button
I'm using SearchView for now. Would rather have a custom layout without
a magnifying glass I need to hide, but this works for now.
2019-07-20 21:54:35 -07:00
Eric House
af1ac3f779 don't optimize for email-only case
The test got out-of-date, and with SMS and clipboard options always
present there's no point in testing: should always pass.
2019-07-14 15:12:15 -07:00
Eric House
6f3be5933f test script taken from eehouse.org (it works) 2019-07-07 13:00:06 -07:00
Eric House
0f00997928 hide show-fcm-receives pref when FCM not built in
I just spent an hour trying to understand why fcm wasn't working against
the f-droid build. This should make that less likely to happen again.
2019-07-07 13:00:06 -07:00
Eric House
1ce243904e bring in changes from eehouse.org
This is what's been running for months, so committing it.
2019-07-07 13:00:06 -07:00
Eric House
475206a373 don't assume send will succeed
(Pulling in change that's been on eehouse.org for a while)
2019-07-07 13:00:06 -07:00
Eric House
22f697cd37 remove option to use backwards-compatible smsproto
Everybody should have upgraded by now...
2019-07-07 13:00:06 -07:00
Eric House
df14108e4e add lowercase equivalents
where missing and seems possible
2019-07-07 13:00:06 -07:00
Eric House
4abefb025c add lower-case letters as alternatives 2019-07-07 13:00:06 -07:00
Eric House
18e1f001a0 Merge remote-tracking branch 'weblate/android_translate' into android_translate 2019-07-07 12:59:15 -07:00
Joan Montané
7a3c646a3e
Translated using Weblate (Catalan)
Currently translated at 97.1% (742 of 764 strings)
2019-07-04 10:01:10 +02:00
Elizabeth Sherrock
f7012e327f
Translated using Weblate (Chinese (Simplified))
Currently translated at 0.0% (0 of 764 strings)
2019-07-02 05:00:40 +02:00
Elizabeth Sherrock
b4de8911fc
Added translation using Weblate (Chinese (Simplified)) 2019-07-01 04:05:24 +02:00
Eric House
2700ba3376 add next-up to changelog 2019-06-29 22:52:07 -07:00
WaldiS
579d0114c4 Translated using Weblate (Polish)
Currently translated at 89.9% (687 of 764 strings)
2019-06-29 22:39:12 -07:00
Eric House
411707a3a1 fix NPE with empty wordlist (and add note for Greek) 2019-06-29 16:44:38 -07:00
Eric House
f1ee8564cb fix to compile with release flags 2019-06-29 16:44:38 -07:00
Eric House
ea0b176b2a debug-build-only macros to find proto-based crashes
When a stream reader and writer are out of sync it often shows up as
trying to read off the end of the stream (firing an assert.) It's useful
to know where that's coming from on android where there's usually no
stack trace in the jin world. So pass __func__ in using macros, and log
before asserting. Crude but quick and already useful.
2019-06-28 21:22:45 -07:00
Eric House
7bc6bf31e8 fix rare crash with synchronized
When I started opening a lot of games at the same time hit a race
condition that synchronized fixes. Duh. Since two similiarly used
variables with the same name confused me, changed that too.
2019-06-27 11:18:07 -07:00
Eric House
4aa7d67d24 honor comms_getAddrDisabled for relay invite sends
It still isn't for other conn-via types, nor for relay invite receipts
that don't go through comms.
2019-06-26 14:08:55 -07:00
Eric House
7809591de5 fix crash with env not being set for dict iter thread 2019-06-24 11:59:48 -07:00
Eric House
25cce2c7f3 add timer to gtk's new-game dialog 2019-06-24 09:20:34 -07:00
WaldiS
e001f0c31f
Translated using Weblate (Polish)
Currently translated at 89.9% (687 of 764 strings)
2019-06-23 22:00:30 +02:00
Eric House
42e3ccef50 remove unused strings 2019-06-23 11:40:33 -07:00
Eric House
84b121ee4c fix path (still doesn't seem to work) 2019-06-23 11:29:29 -07:00
Eric House
b3e197dd59 tweak change note 2019-06-23 11:16:15 -07:00
Eric House
ef1746632b cleanup 2019-06-23 11:12:27 -07:00
Eric House
b9df279cd5 Merge branch 'android_translate' into android_branch 2019-06-23 11:05:10 -07:00
Eric House
c2c6312e91 include service delay stats for DEBUG builds
A start at determining of often there's a problem with Service not
scheduling work quickly enough.
2019-06-23 10:20:16 -07:00
Eric House
fb0d87781a build from new wordlist 2019-06-23 10:20:16 -07:00
Eric House
5bce759d32 fix race condition leading to NPE 2019-06-23 10:20:16 -07:00
Eric House
4f63ad3b83 wip: cleanup (not related to duplicate) 2019-06-23 10:20:16 -07:00
Eric House
ba363fdbc9 offer to email when unable to lock game
Only on non-shipping builds. This is attempting to catch a non-repro
lock-forever I'm trying to fix.
2019-06-23 10:20:16 -07:00
Eric House
c72e97e0f6 add support for 64-bit ARM
Add a third processor type to the .so, and fix first compile-time
warnings and then a few dumb bugs based on assumptions about ptr sizes.
Works to play networked games and browse wordlists, but is not
extensively tested and needs to be before release.
2019-06-23 10:20:16 -07:00
Eric House
ce26696a37 assert refcount never climbs after reaching 0
Looking for a common but not-yet-reproducible situation where the
gamelock gets stuck preventing a game from being opened, usually related
to a move arriving. One thing that looked wrong is it seemed possible to
have the refcount drop to 0 then get increased again, causing somebody
to thing he has a lock when it's actually unlocked. So assert to try to
catch that case (and synchronize to make it much harder.)
2019-06-23 10:20:16 -07:00
Eric House
b50bc145af show SMS status in (fixes always-red indicator)
(Not duplicate-specific)
2019-06-23 10:20:16 -07:00
Eric House
ac84a3b376 change engine to optionally look at pending tiles
option not used ... yet
2019-06-23 10:20:16 -07:00
Eric House
881128f1c9 Makefile for CSW19 ... ish 2019-06-23 10:20:16 -07:00
Eric House
37ebf508e5 add DBUtils utility for saving/restoring Serializables 2019-06-23 10:20:16 -07:00
Eric House
78f1ba6dde fix npe sending relay invites to self
Needed to handle the case where both are null. Can't reproduce this in
release builds so likely doesn't justify a new release.
2019-06-23 10:20:16 -07:00
Eric House
b63ba3e843 show toast when dropping duplicate invite if DEBUG
I forget to enable that option too often. (No impact on release builds.)
2019-06-23 10:20:16 -07:00
Eric House
a9eff12074 remove exif data from image files
command: find . -name '*.jp*g' -o -name '*.png' | xargs exiftool -all=
Did this because fdroid is complaining about metadata and I can't see
any obvious changes in the appearance of the app, but it's not
well-considered. Back this out if there are problems.
2019-06-23 10:20:16 -07:00
Eric House
1e5024f4d5 remove wince files 2019-06-23 10:20:16 -07:00
Eric House
dd51e7ca06 add menuitem to copy relayid to gtk clipboard
(I'm tired of typing it manually.)
2019-06-23 10:20:16 -07:00
Eric House
266765405b try to fix assertion by catching null UDP socket
I think there's a rare race condition here. Assuming it results from a
bad network state rather than two sends coming too quickly, respond to
not having a connection by killing the thread so the next send will
retry.
2019-06-23 10:20:16 -07:00
Eric House
c6c8e4209f add more logging around failure-to-open-intent 2019-06-23 10:20:16 -07:00
Eric House
cf4a7d91a0 try harder to respond to an intent with a rowID
Failure to immediately get a lock for a rowID in an intent meant that
other intent processing kicked in, and might have done the wrong
thing. So now if there's a rowid in it we try nothing else. And we use
the GameLock callback mechanism to deal with the case where it's
temporarily unavailable, as it will be when an incoming move is being
dispatched to it.
2019-06-23 10:20:16 -07:00
Eric House
2827526466 up strings for new release 2019-06-23 10:20:16 -07:00
Eric House
9be8b21efc always log stack of lock held more than 1 minute
(DEBUG only) I'm seeing deadlocks in a non-reproducible way and need to
get at the source. This should log the stacks of long-held locks, and
notify via Toast (when possible) when it occurs.
2019-06-23 10:20:16 -07:00
Eric House
993fff8e13 use a single queue for all nbsproto threads
No point in worrying about whether a thread exists without emptying its
queue. Instead have a thread start when something's added to the queue
and exit when it's been empty for a while. Only trick is the need to
remember the phone number[s] on behalf of which a retry's necessary
because jni code is waiting to see if combining can be done.
2019-06-23 10:20:16 -07:00
Eric House
8c2582b9a2 differentiate betweeen PENDING and RECENT tiles
Should not show the new you-can-lookup-uncommitted-words hint for
already-played words, so needed to be able to tell difference between
the two. Now you can -- and on the gtk side I draw them differently
because I can.
2019-06-23 10:20:16 -07:00
Eric House
8044593249 log msgIDs (relay only for now)
I want to track and eliminate the duplication of the 0th message.
2019-06-23 10:20:16 -07:00
Eric House
22a68dd8cf put message back in okonly dialog 2019-06-23 10:20:16 -07:00
Eric House
6098f28210 preserve checkmarks when invite dialogs rotate 2019-06-23 10:20:16 -07:00
Eric House
6a28e398dc trivial changes to force a build 2019-06-23 10:20:16 -07:00
Eric House
a50927a00d replace oft-firing assertion with logging
It's crashing all the time and involves a system that only exists in
debug builds. So I should understand the root cause, but other stuff
needs to get done first.
2019-06-23 10:20:16 -07:00
Eric House
797eea833a add hint explaining new tap-on-pending-words feature
And bring back another BoardCanvas hint that had been commented out.
2019-06-23 10:20:16 -07:00
Eric House
d3f4a729d7 remove dead code 2019-06-23 10:20:16 -07:00
Eric House
762e701a00 allow long-tap lookup of pending words too
When a word's been formed as part of the current turn, but not yet
committed, allow long-tap to trigger an offer to look it up online same
as for already-committed words. Allows checking the legality of
potential plays AND figuring WTF the hint feature just suggested.
2019-06-23 10:20:16 -07:00
Eric House
8f6026e633 add empty invitee list string for Bluetooth too 2019-06-23 10:20:16 -07:00
Eric House
c5efeb283a fix invite dialogs for landscape layout
Scrolling's needed in some cases, and you can't easily put a ListView
inside a ScrollView. So replace the ListView with a LinearLayout whose
contents I manage manually, and wrap the whole layout in a ScrollView.
2019-06-23 10:20:16 -07:00
Eric House
054ac325bb fix invite-how alert not scrolling
By setting a custom view I wasn't using I broke scrolling of the
AlertDialog's list view which I was using. Known bug apparently....
2019-06-23 10:20:16 -07:00
Eric House
84dc14ff78 get rid of DispatchNotify
All it did was forward intent's data to MainActivity. Only question is
whether making MainActivity singleTask is a problem. We'll see.
2019-06-23 10:20:16 -07:00
Eric House
c82081521f cleanup 2019-06-23 10:20:16 -07:00
Eric House
71af4d3187 make it a single thread 2019-06-23 10:20:16 -07:00
Eric House
bade9f6b40 move SMSPhoneInfo into its own class/file 2019-06-23 10:20:16 -07:00
Eric House
266c61f84b make a common superclass 2019-06-23 10:20:16 -07:00
Eric House
1c2a0ed994 Rename SMSService NBSProxy, and make it not a service
Just keep a thread for each
phone we're sending to or receiving from, and pass them packets and
other things to send or (incoming case) process. So far the threads
don't die, but they will soon once there's nothing in their queues. Just
need to be sure there's no racing there.

This is to work around the frequent failure of the OS to pass enqeued work
into the service within a reasonable amount of time (I expect seconds, but see
delays of minutes or even hours.)
2019-06-23 10:20:16 -07:00
Eric House
fe96a72a3e use mutex to synchronize access to smsproto apis
I'm seeing my simultaneous access assert fail, so might as well break
fix it the foolproof way. It's background threads only that are calling
this stuff on Android so blocking them shouldn't hurt.
2019-06-23 10:20:16 -07:00
Eric House
808a896fbf up strings for release
This is just to try yet again to get past the play store console's
past-permissions bug
2019-06-23 10:20:16 -07:00
Eric House
1ed9ad4aac reflect bt receipts in how long since saw device
Made no sense to use explicit scans only since typically you only do
that to get things going.
2019-06-23 10:20:16 -07:00
Eric House
06b9598414 add makefile for new wordlist 2019-06-23 10:20:16 -07:00
Eric House
7e9f75de0a remove separate marking of permissions as banned
It's enough to check manifest for their presence
2019-06-23 10:20:16 -07:00
Eric House
ed066f99a2 Up version code and string to try a new play store release 2019-06-23 10:20:16 -07:00
Eric House
fd0ec1d131 move SMSReceiver from main manifest to the others
Theory is that the store's buggy site is presenting its
banned-permissions interface because it's detecting a Receiver that
requires SMS_RECEIVE permission even though the permissions themselves
aren't there any more.
2019-06-23 10:20:16 -07:00
Eric House
70123e2cd3 up version name (but not code)
This will NOT be released on Google Play, so no need to up code.
2019-06-23 10:20:16 -07:00
Eric House
71e8132f55 fix broken symlink 2019-06-23 10:20:16 -07:00
Eric House
ffb3b19aef fix build script for new Play Store variant name 2019-06-23 10:20:16 -07:00
Eric House
c1c2c415dd changelog and cleanup 2019-06-23 10:20:16 -07:00
Eric House
1522463a3a fix multi-message aspect of smsproto
passes --run-sms-test now, and works on Android occasionally combining messages.
2019-06-23 10:20:16 -07:00
Eric House
9c1e7ac154 cut logging in test app 2019-06-23 10:20:16 -07:00
Eric House
e9bcf6a476 always respect user's local player name 2019-06-23 10:20:16 -07:00
Eric House
53d2aa8023 fix a couple of random crashes
a race condition and a misunderstanding
2019-06-23 10:20:16 -07:00
Eric House
3d5b4017e5 add useful stuff to build-info.txt inside .apk 2019-06-23 10:20:16 -07:00
Eric House
0f9fd24cb7 try to address one-time assert
and remove it from shipping build
2019-06-23 10:20:16 -07:00
Eric House
92a30249a6 show the stalled-service alert based on pref
Allow users to turn the notification on; otherwise skip it. And set
the default on/off based on DEBUG type of build.
2019-06-23 10:20:16 -07:00
Eric House
1b84878930 add a bool resource matching BuildConfig.DEBUG
I want to be able to have some boolean prefs default based on whether
it's a DEBUG build.
2019-06-23 10:20:15 -07:00
Eric House
d25041e8a0 fix null procptr crash in jni
I can't reproduce this, but while testing recovery from DatagramSocket
recreation in RelayService got enough to know that somehow a timer's
procptr's not set. So test before calling, and log instead of crashing.
2019-06-23 10:20:15 -07:00
Eric House
36cc181a5e get another DatagramSocket when ours goes bad
Fix longstanding bug triggered by something as simple as putting device
into and out of airplane mode. Once the class-variable socket was
created it was never replaced. Now respond to exceptions that mean it's
useless and set it to null so existing logic will recreate it.
2019-06-23 10:20:15 -07:00
Eric House
4354cbdc4f tweaks to logging and imports; should have no effect 2019-06-23 10:20:15 -07:00
Eric House
52891e8391 report inability to get locks in travis debug builds 2019-06-23 10:20:15 -07:00
Eric House
dbcec41450 track all pending service Intents; warn of stalls
When enqueuing Intents for any of the three services, cache the
Intent. When onHandleWork() is called, remove the equivalent cached
intent. Then periodically check for intents that have been stored for
more than 60 seconds, and post a Notification alerting user to
stall. The user will likely have noticed that messages aren't flowing,
so this will simply explain the problem. Includes an "email author"
button.
2019-06-23 10:20:15 -07:00
Eric House
7b04f8d4ed cleanup and refactor
Move some work into superclass where instrumentation can be added to
greater effect. And remove from BTService an earlier attempt (at stall
detection.)
2019-06-23 10:20:15 -07:00
Eric House
97a3c3a2d8 refactor: new constructor for common case 2019-06-23 10:20:15 -07:00
Eric House
0728d06c4d make msgNo reflect srcID, not channelNo
It's more useful if it's per-device unique within a game. (Just used for
debugging now, so no impact on anything.)
2019-06-23 10:20:15 -07:00
Eric House
c4bba7db74 additions for debugging
toward tracking down relay stalls, log a bit more in resend process and
add UI to support an option where there's no reliance on
polling (i.e. FCM only)
2019-06-23 10:20:15 -07:00
Eric House
f7444785ab replace assert with logging 2019-06-23 10:19:01 -07:00
Eric House
577fd3e560 Wait for ACK to remove stored message
Bringing in a change that's been on the production relay for a while but
apparently didn't pass tests locally. Now it does.
2019-06-23 10:19:01 -07:00
Eric House
da917c35f5 apply ordering and limit correctly 2019-06-23 10:19:01 -07:00
Eric House
13d2917d85 up version strings 2019-06-23 10:19:01 -07:00
Eric House
c9d4df0cc4 add missing AndroidManifest.xml files for new variants 2019-06-23 10:19:01 -07:00
Eric House
b4aa6e2ae9 use latest nbsplib 2019-06-23 10:19:01 -07:00
Eric House
ae5b78e955 change to work with changed NBSProxy API 2019-06-23 10:19:01 -07:00
Eric House
5c243b3ff9 API's changed 2019-06-23 10:19:01 -07:00
Eric House
8b3c64b476 use the latest NBSProxy dev release 2019-06-23 10:19:01 -07:00
Eric House
da857e30e4 add logging of CurGameInfo
Trying to track down why some player names aren't preserved
2019-06-23 10:19:01 -07:00
Eric House
dfcb6272e3 override toString() for debugging 2019-06-23 10:19:01 -07:00
Eric House
4aee08b8d4 add missing consts 2019-06-23 10:19:01 -07:00
Eric House
94f7e13468 change emacs compile command (in comment)
No point defaulting to something that no longer exists
2019-06-23 10:19:01 -07:00
Eric House
edb0a8a8f7 fix symlinks post rename 2019-06-23 10:19:01 -07:00
Eric House
38775e4172 fix broken symlink 2019-06-23 10:19:01 -07:00
Eric House
be2ba7388d change name of variant -- it's not the main one anymore 2019-06-23 10:19:00 -07:00
Eric House
62c0292045 check if permission in manifest
I got bitten when creating a new variant leaving the permission out of
the manifest but using a config flag to claim it was there. Better to
have just one place to configure that. So check for presence in the
manifest and, for now, assert that that matches the isBanned flag. Soon
the isBanned flag can be removed.
2019-06-23 10:19:00 -07:00
Eric House
99eafd9c60 add retain()/release()
Seems to work but needs testing!
2019-06-23 10:19:00 -07:00
Eric House
16fccca3a8 up version code to try another gps release 2019-06-23 10:19:00 -07:00
Eric House
d925981666 add new Variant for github & sourceforge releases
and log permission check results
2019-06-23 10:19:00 -07:00
Eric House
acbbb7fc88 one less malloc 2019-06-23 10:19:00 -07:00
Eric House
0a249c8595 tweak UI with longer string 2019-06-23 10:19:00 -07:00
naofum
2c6f3f3794 Translated using Weblate (Japanese)
Currently translated at 75.9% (580 of 764 strings)
2019-06-23 10:19:00 -07:00
Eric House
8f51ee11df tweak string 2019-06-23 10:17:55 -07:00
Eric House
ffb768d75e don't capture lock stack in release builds 2019-06-23 10:17:55 -07:00
Eric House
937dd8081e unlock lock we won't be keeping
This might fix the occasional game permalock.
2019-06-23 10:17:55 -07:00
Eric House
7d8d584a85 fix a likely-fluke NPE with a test
It seems impossible for the menu to be getting update without init()
having been called, but that must be what happened. To check for null.
2019-06-23 10:17:55 -07:00
Eric House
4ba46e62f4 fix invite not coming up after perms warning dismissed
or when it's not shown at all because the not-again checkbox is checked
2019-06-23 10:17:55 -07:00
Eric House
f968994451 cleanup 2019-06-23 10:17:55 -07:00
Eric House
df3cab8c26 up version of NBSProxy lib 2019-06-23 10:17:55 -07:00
Eric House
da47316152 fix npe 2019-06-23 10:17:55 -07:00
Eric House
468da222de add not-again checkbox to remove-sms-from-game alert
Some people will decide to leave SMS comms in while I look for an
alternative. Maybe. Don't show them the same alert every time they open
the game. In the process removed what seemed to be a duplicate ivar.
2019-06-23 10:17:55 -07:00
Eric House
dfcf76f5cd refactor alerts code
Should be no change here, but the goal's to make it easier to mix
functionality, e.g. adding notagain checkbox to other types.
2019-06-23 10:17:55 -07:00
Eric House
a40c6f494f don't show sms-failed toast when permission is banned 2019-06-23 10:17:55 -07:00
Eric House
d31271e372 move constant 2019-06-23 10:17:55 -07:00
Eric House
712c61b9d5 add Overrides as part of sanity check 2019-06-23 10:17:55 -07:00
Eric House
2828744aa2 include name of game being deleted 2019-06-23 10:17:55 -07:00
Eric House
f8e840cf04 update web page (esp. fix style for device display) 2019-06-23 10:17:55 -07:00
Eric House
81fc21e0e5 cleanup 2019-06-23 10:17:55 -07:00
Eric House
dc9d05fc94 give new variant the right icons 2019-06-23 10:17:55 -07:00
Eric House
b8ed94b765 update changes log 2019-06-23 10:17:55 -07:00
Eric House
146d104e2b oops 2019-06-23 10:17:55 -07:00
Eric House
8456b9fd76 relay tracks variantCode int, not string 2019-06-23 10:17:55 -07:00
Eric House
6bc65476d0 add a case for Signal as default SMS app 2019-06-23 10:17:55 -07:00
Eric House
a093dae712 display the Banned alert from invite-choice dialog 2019-06-23 10:17:55 -07:00
Eric House
8cb53eb884 add non-mobile number if user confirms
Fix logic error that didn't proceed with the number-add in the
non-mobile case.
2019-06-23 10:17:55 -07:00
Eric House
9def95fed7 try various recipes for launching SMS app
There's no one way to launch an SMS app with a ready-to-send
invitation. So try the two that work on our two phone/app combinations,
iterating until startActivity() succeeds. The code's set up to have new
recipes added easily.
2019-06-23 10:17:55 -07:00
Eric House
390a59ee17 post a tip/warning when new invite-by-sms-app chosen 2019-06-23 10:17:55 -07:00
Eric House
8d3b9ac2d5 send an int code rather than a name 2019-06-23 10:17:55 -07:00
Eric House
3326fc90f2 warn when 'sms data' selected in build where it's banned 2019-06-23 10:17:55 -07:00
Eric House
c97905e11e more tweaks 2019-06-23 10:17:55 -07:00
Eric House
2ca85cc0b1 remove logging 2019-06-23 10:16:59 -07:00
Eric House
bdb31224e9 new method stub to fix fdroid build crash 2019-06-23 10:16:59 -07:00
Eric House
e70dc45fb1 script to build all possible variants 2019-06-23 10:16:59 -07:00
Eric House
ff7f4655f7 removing permissions from the Play Store version 2019-06-23 10:16:59 -07:00
Eric House
5bdc473e02 use NBSProxy if available
Lots of work dealing with banned permissions (SEND_SMS and
RECEIVE_SMS). First, if they're banned and NBSProxy is installed, just
use it as if the permissions had been granted. When it's not there,
explain at various points where users will otherwise be confused: when
they try to invite using data sms, or when they open a game that already
uses it.)
2019-06-23 10:16:59 -07:00
Eric House
c59e86b724 support setActionPair() for okOnly alerts too 2019-06-23 10:14:16 -07:00
Eric House
4493f9d9cd cut some logging 2019-06-23 10:14:16 -07:00
Eric House
039e50ecff remove misplaced assert
It's an error to use an env with the wrong thread, but it IS possible
for more than one thread to be associated with the same env. So don't
assert to the contrary.
2019-06-23 10:14:16 -07:00
Eric House
d5ae8356b4 fixing refcounting and adding logging
Seeing the occasional crash and trying to plug leaks that might be
contributing. I think I fixed the Gameptr.finalize() assertions I've
been seeing forever but the thread match assertion remains. Logs will
help catch that.
2019-06-23 10:14:16 -07:00
Eric House
7f8b3c1820 remove logging and reformat: no change 2019-06-23 10:14:16 -07:00
Eric House
8ace884d56 return supported types as list, not set
I was seeing them displayed in different orders where I want to control
the order instead.
2019-06-23 10:14:16 -07:00
Eric House
451d2a271e use constant APPLICATION_ID instead of method call 2019-06-23 10:14:16 -07:00
Eric House
89c103ab4c remove some logging 2019-06-23 10:14:16 -07:00
Eric House
aa8296f829 make setActionPair work for confirmThen alerts too
(To be used shortly)
2019-06-23 10:14:16 -07:00
Eric House
4297b3c2c3 recast SMSService as a JobIntentService
Didn't think it was required, but once the app started getting messages
in the background it stoped working or crashed. Changes are minimal
because this service isn't responsible for receiving messages: it
doesn't have the long-lived threads of the BT and Relay services.
2019-06-23 10:14:16 -07:00
Eric House
1e397d07f4 add debug-only checking for thread safety
Lots of threads call the smsproto code now so the existing check was
failing. Replace it with one that ensures that only one thread at a time
is running the code. Debug-builds only.
2019-06-23 10:14:16 -07:00
Eric House
2b87d60cba Let's test this jitpack stuff on Travis
Importing a library but not using it yet
2019-06-23 10:14:16 -07:00
Eric House
bec37536f6 more data with my SMS
And catch an exception starting SMSService in background
2019-06-23 10:14:16 -07:00
Eric House
713d2e5634 make result -1 if will otherwise trip asserts. 2019-06-23 10:13:32 -07:00
Eric House
c05d8c43d2 logging toward finding who's sending or reporting 0 2019-06-23 10:13:32 -07:00
Eric House
89a5ccf4bc pull nbs port-checking over from NBSProxy 2019-06-23 10:13:32 -07:00
Eric House
7bee8120a8 logging toward tracking a rare assertion failure 2019-06-23 10:13:32 -07:00
Eric House
8fb1a8405a add extra explanatory text to phone number invite dialog
Set different expectations based on whether the invitation's by NBS or a
launch of the messaging app.
2019-06-23 10:13:32 -07:00
Eric House
13b789847c distinguish between NBS and SMS
What I've been calling SMS is now "data sms" (or "nbs", in
code). There's a new way of inviting, called "User Sms" or somesuch,
that launches the user's SMS app with a URL and phone number, much like
email (save that no addressing is required by the inviter.) This new way
won't be involved in the ban on SMS permissions. (But play by NBS is
still awesome and will stay where it can.)
2019-06-23 10:13:32 -07:00
Eric House
15a1dad5ea that's already done 2019-06-23 10:13:31 -07:00
Eric House
a187fdca64 put back the nbs port 2019-06-23 10:13:31 -07:00
Eric House
a3d6dc809b some cleanup, e.g. to assert my signals are valid 2019-06-23 10:13:31 -07:00
Eric House
d5e68141bd comment out dead code I keep reading 2019-06-23 10:13:31 -07:00
Eric House
0ad1697607 fix valgrind-noted empty array cruft. 2019-06-23 10:13:31 -07:00
Eric House
8be4bd5f51 fix defines and compile that then broke 2019-06-23 10:13:31 -07:00
Eric House
27e33dda62 new version code to replace bad upload 2019-06-23 10:13:31 -07:00
Eric House
a400a62753 fix broken noSMS variant
needed SMS permissions in a new xw4 manifest
2019-06-23 10:13:31 -07:00
Eric House
f5d92735be remove SMS_BANNED stuff for now 2019-06-23 10:13:31 -07:00
Eric House
3a41be0051 up changelog 2019-06-23 10:13:31 -07:00
Eric House
9baffc93e3 exit thread when BT turned off
(The test was in the thread this replaced.)
2019-06-23 10:13:31 -07:00
Eric House
23739f57b9 put back SMS permissions
March 9's the deadline, so let's not remove it yet!
2019-06-23 10:13:31 -07:00
Eric House
5897e4c59e make packet accumulator a thread that sends
Get rid of the single sender thread and the complexity of querying
individual queues for their state (and the slowdown that happened when
successful writes had to wait for those to devices that weren't
responding). Instead each PacketAccumulator does its own waiting with
timeouts and backoffs, wakes itself when appropriate, and periodically
sends if it can make a connection. Now when there are a bunch of
messages ready they'll get sent pretty quickly once connections to the
remote device start to be successful.
2019-06-23 10:13:31 -07:00
Eric House
183b221a2e each message gets a localID so logs can show progress
And rewrite toString()
2019-06-23 10:13:31 -07:00
Eric House
156c05d54c add another DeadlockWatch (and import already) 2019-06-23 10:13:31 -07:00
Eric House
614b4d3610 put Killer back: device can receive but never process
A device where the OS isn't servicing enqueueWork() requests won't write
back to sockets it accept()s, causing the sender's writer to block
forever. So give it 30 seconds then kill the socket.
2019-06-23 10:13:31 -07:00
Eric House
9bd95d2ccf fix NPE (by inspection, from crashlytics report) 2019-06-23 10:13:31 -07:00
Eric House
e73f1b5b88 don't enqueue dupes of messages already in queue
No point in giving a spot to something the receiver will drop as a
duplicate.
2019-06-23 10:13:31 -07:00
Eric House
0133459114 update status more often (as old code did) 2019-06-23 10:13:31 -07:00
Eric House
9eef188ebe fix concurrent access exception and too-slow sends
if we successfully send, we should reset the backoff so we try again
quickly. Especially at a time when only one message is sent per connection.
2019-06-23 10:13:31 -07:00
Eric House
a8241cc085 change key to force new value
fixes what was probably a crash only for me, but....
2019-06-23 10:13:31 -07:00
Eric House
0d757c605f report invitation success even if dict download needed 2019-06-23 10:13:31 -07:00
Eric House
d907b4201c use https scheme for dict downloads 2019-06-23 10:13:31 -07:00
Eric House
9915c464af Move back to old one-msg-per-connect() model
Add support for the old protocol, and define to use it. After the next
release has been adopted and everybody can read the new protocol another
release will turn it on.
2019-06-23 10:13:31 -07:00
Eric House
31d8345e6b add not-again checkbox to BAD_BT_PROTO dialog
Won't help the old-build side of the exchange of course.
2019-06-23 10:13:31 -07:00
Eric House
341293dc55 prune only those messages successfully sent
Fix race condition that would have cleared all messages including those
added after a send began. In the process, move to storing outbound
messages individually rather than concatenated in their stream format.
2019-06-23 10:13:31 -07:00
Eric House
ff2a06592f add alert to launch app when OS not scheduling service
Set a boolean every time app's upgraded, and clear it on first launch of
MainActivity. In between, if we try to launch the BTService but the OS
doesn't schedule it, post a notification asking user to launch the app.
2019-06-23 10:13:31 -07:00
Eric House
1505a443ac exit threads when BT off; add util to report deadlocks
I've seen a deadlock in the BT stuff. Now they'll be caught and reported
via Crashlytics on DEBUG builds.
2019-06-23 10:13:31 -07:00
Eric House
e23129c0e7 always increment failure count on send failure 2019-06-23 10:13:31 -07:00
Eric House
5cb2be33d2 Rewrite BT proto to batch messages
Lots of changes. Old BT proto is no longer compatible. New one
batches messages per device and sends all on a single connection.
The queue (now a single buffer) is now a static global and the thread
that services it doesn't die (but gloms onto whatever Service instance
is most recent.) Code to pack and unpack the protocol can probably be
reused for wifi-direct or any other pass-through transport.
2019-06-23 10:13:31 -07:00
Eric House
e13d90409c replace some firing asserts with log messages
I'm getting crashes on a device with an iffy wifi connection and no SIM.
May need to look into these.
2019-06-23 10:13:31 -07:00
Eric House
997aad84ff don't open game just because it was created
Posting a notification is enough. And existing code already handles the
missing dict case, so GamesListDelegate doesn't even need to know.
2019-06-23 10:13:31 -07:00
Eric House
54fb43ec62 double scan progress time
Since the BT stuff tends to timeout late when failing, this looks better.
2019-06-23 10:13:31 -07:00
Eric House
de9b0851d5 add env to map immediately, in initGame()
I'm seeing an assertion failure in cleanup that could be explained by
the cleanup happening when initGame() has been called but no subsequent
jni method that would have added the env to the map. So let's add it
immediately so that can't happen.
2019-06-23 10:13:31 -07:00
naofum
f8537c6a88 Translated using Weblate (Japanese)
Currently translated at 74.3% (568 of 764 strings)
2019-06-23 10:13:31 -07:00
Eric House
989f7524d6 unselect any game moved into a closed group
Fixes GameOver game moved via "archive" checkbox remaining selected
2019-06-23 10:12:05 -07:00
Eric House
76957fe4eb don't move selected games via context menu
Both ways of invoking move-to-group were working on the set of selected
games. Instead pass what's meant to be operated on as a parameter.
2019-06-23 10:12:05 -07:00
Eric House
682501814b put GameOver view layout into a ScrollView
When device in landscape the archive box is otherwise unreachable on a
four-player game
2019-06-23 10:12:05 -07:00
Eric House
dc1431fd08 make GamePtr AutoCloseable and use where possible 2019-06-23 10:12:05 -07:00
Eric House
c706205cd1 Make JNIThread autoclosable and use everywhere
JNIThread is somehow sticking around sometimes and holding the lock for
a game so that that game can never be opened again. On the theory that
there's some place retain() was called but not release(), use the thing
in try-with-resources wherever possible. Which is pretty much
everywhere.

Also added age to the lock-holder report being uploaded.
2019-06-23 10:12:05 -07:00
Eric House
e56770ea29 include stack of lock owner when logging failure to lock 2019-06-23 10:12:05 -07:00
Eric House
ceb68b9787 Fix NPE when url for delete game has changed
I think it's only an issue for debug builds where I've manually pointed
at a different server, but just in case.
2019-06-23 10:12:05 -07:00
Eric House
58882fe52f make text in new GameOver alert bigger
To match how it was when using the system-provided view.
2019-06-23 10:12:05 -07:00
Eric House
25509c729a report stack of lock owner to crashlytics when can't get it
I'm seeing something permanently lock a game so it can't be opened. So
add code to report the stack of the owner to Crashlytics when opening
fails 3 times in a row. It's stubbed out for non-debug builds.
2019-06-23 10:12:05 -07:00
Eric House
babca4a696 Add custom GameOver alert for GameOver with Archive checkbox
I didn't like having to re-open a game to archive it after
rematching, so now there's a checkbox that lets you archive it after
either rematching OR just using OK to dismiss the alert. Also fixed
rematch of a solo game causing new game to be created in Archive
group if that's where the source game was.

squash me
2019-06-23 10:12:05 -07:00
Eric House
0ad9b0f891 up copyright year 2019-06-23 10:12:05 -07:00
Eric House
fce0eb2acc add git rev to crashlytics reports 2019-06-23 10:12:05 -07:00
Eric House
0cd0bd4c03 plug leak 2019-06-23 10:12:05 -07:00
Eric House
2afce586a3 avoid crashes when BT turned off
Test at enqueueWork() and onHandleWorkImpl(). Seems to do it. Maybe
turning it off mid-send will still crash...
2019-06-23 10:12:05 -07:00
Eric House
601eaf395c don't create threads we won't use 2019-06-23 10:12:05 -07:00
Eric House
7ba2f92645 null listener thread ref so will be restarted
Once it died it stayed dead: bad.
2019-06-23 10:12:05 -07:00
Eric House
ef602baa18 cleanup 2019-06-23 10:12:05 -07:00
Eric House
7ccb576214 Recast BTService as a JobIntentService
Got tired of the space the forground-service notification icons were
taking. So now BT sends and receives are done via static threads and
onHandleWork(). The send thread times itself out quickly. The receive
thread doesn't yet. We'll see how long the OS lets it run and what
needs to be done to deal with that.
2019-06-23 10:12:05 -07:00
Eric House
438e134870 add debug-only option for invitee players to be robots
It's useful when testing to have the remote device play without human
interaction. So add an option, and UI to trigger it, for the players
created remotely in response to an invitation to be robots. There are
guards in place to catch the feature slipping into a release build.
2019-06-23 10:12:05 -07:00
Eric House
136fa6ac7d remove some logging 2019-06-23 10:12:05 -07:00
Eric House
842509d84a remove methods overridden just for logging
looks like I've fixed the crash I wanted to diagnose.
2019-06-23 10:12:05 -07:00
Eric House
29661d2a7e fix relay interactions again
Eliminate the writer thread, since onHandleWork() is already getting
called on a thread and can process the outbound queue itself. And get
rid of reader thread needing to wait for an instance of the RelayService
to be available to process a packet (which was taking 5-10 seconds all
the time): just post received packets via an enqueueWork() call using
the app context that's always available.
2019-06-23 10:12:05 -07:00
Eric House
34b462b97c pass context and use to post lock-failure toast 2019-06-23 10:12:05 -07:00
Eric House
888109ce4e tweak/reduce logging 2019-06-23 10:12:05 -07:00
Eric House
c4d21b7b59 move constant from XWApp to build.gradle 2019-06-23 10:12:05 -07:00
Eric House
781da8ccb6 avoid NPE (and log to root-cause it later) 2019-06-23 10:12:05 -07:00
Eric House
37085b0ba1 ensure writer gets run every time OS schedules via onHandleWork() 2019-06-23 10:12:05 -07:00
Eric House
130487f7df remove some logging 2019-06-23 10:12:05 -07:00
Eric House
122b270025 fix NPE and let GameSummary stay until replaced
GameListItem was clearing its summary when kicking off a replacement
load. Instead keep the old around in case somebody wants it (e.g. to
figure out what menus to enable) until the reload finishes.

Also add logging of how long loading takes. I think a cache might be
called for.
2019-06-23 10:12:05 -07:00
Eric House
6193c376db move invite button above button bar.
(It's more frequently used)
2019-06-23 10:12:05 -07:00
Eric House
2a5c3b11a0 add context comment for new string 2019-06-23 10:12:05 -07:00
Eric House
4ce20a49a6 cleanup via new macro 2019-06-23 10:10:49 -07:00
Eric House
1e6fdd1f70 remove logging 2019-06-23 10:10:49 -07:00
Eric House
0a50a721dd fix malformed xml string
Weblate bug?
2019-06-23 10:10:49 -07:00
Eric House
aab36efdac fix problems with RelayService
Darned thing was dropping packets, failing to connect games built in
response to invitations, and otherwise misbehaving. First was due to not
resheduling when exited with outbound packets in queue; second to not
overriding relayNoConnProc() (due to signature change.) Though it still
happens occasionally.... Also added timestamps to track how long it
takes a packet to be sent and ACK'd.
2019-06-23 10:10:00 -07:00
Eric House
0ad21783b8 add rowid to NoSuchGameException 2019-06-23 10:10:00 -07:00
Eric House
8ff23294e6 fix NPE (and tweak logging) 2019-06-23 10:10:00 -07:00
Eric House
fd122148b8 add flavor to toasted got-fcm message
So I can tell the apps apart
2019-06-23 10:10:00 -07:00
Eric House
d067b867a2 stop storing fcm keys and similar data in postgres arrays
Not sure why I was doing this, but it's not worth the
trouble (e.g. stopping updates of other data to fix an android bug
sending too many reregistration messages.) So now just use the first
element of arrays, replacing what's there instead of prepending. Ideally
those columns would not be arrays, but that's a harder change.
2019-06-23 10:10:00 -07:00
Eric House
b198091490 make script executable 2019-06-23 10:10:00 -07:00
Eric House
ac5cbea83f display latest FCM receipt as part of netstats for relay 2019-06-23 10:10:00 -07:00
Eric House
c67bda8683 use a constant jobID for enqueueWork()
That each VM instance had a different id might be why I was
crashing. We'll see.
2019-06-23 10:10:00 -07:00
Eric House
41bcaa69cb fix so success detected from new API 2019-06-23 10:10:00 -07:00
Eric House
b5ab8803c4 remove debug-only assert I'm seeing
Good to know it's happening; now don't crash!
2019-06-23 10:10:00 -07:00
Eric House
40eab8690b put back pref controlling whether FCM receives are Toasted 2019-06-23 10:10:00 -07:00
Eric House
272204223e make md5sum calculation available everywhere
I want to log sums to see when they arrive on relay. And also add some
missing @Overrides I noticed.
2019-06-23 10:10:00 -07:00
Eric House
f28c21206c put up toast when FCM message received
It's too useful to live without. So: tap into the static list of live
Delegates, and if any of them has an Activity available use it to run
Toast on UI thread. Otherwise there will be no display.
2019-06-23 10:10:00 -07:00
Your Name
fc0480376b pull and display new field 2019-06-23 10:10:00 -07:00
Eric House
940977718e don't save duplicate devIDs
There's likely a bug in Android now where I'm registering over and
over though the fcm id hasn't been changed. That's wrong, but it's
also wrong (and filling up the db) to register a duplicate as if it
were new. So stop that.
2019-06-23 10:10:00 -07:00
Eric House
6853b203a1 make https the default for prefs-alterable strings
And change the keys so all local changes get reset
2019-06-23 10:10:00 -07:00
Eric House
2c4ce83a5b use https everywhere. And rewrite URLs if necessary. 2019-06-23 10:10:00 -07:00
Eric House
5d36470e50 add some logging around RelayService lifecycle 2019-06-23 10:10:00 -07:00
Eric House
7fba555d33 fix just the warnings; VSIZE is safe 2019-06-23 10:10:00 -07:00
Eric House
bbe69f6398 Revert "toward compiling with gcc8"
This reverts commit d293517e7c.
2019-06-23 10:10:00 -07:00
Eric House
e8ab9e0b8b toward compiling with gcc8
My VSIZE is no longer legal, and apparently there's no workaround (no
way to safely figure the length of an array whose size is known at
compile time.) To avoid the risk of duplicating little constants, added
macros that define length in a way a new VSIZE can pick it up. Couldn't
make that work for struct field arrays, however, so there I'm using
constants.
2019-06-23 10:10:00 -07:00
Eric House
36b21aa7ed remove the last critical error 2019-06-23 10:10:00 -07:00
Eric House
a2aafc8b93 fix another critical warning 2019-06-23 10:10:00 -07:00
Eric House
71fb14bce1 fix gtk critical errors 2019-06-23 10:10:00 -07:00
Eric House
5f9d39ef8d communicate variant to relay, and store in new column 2019-06-23 10:10:00 -07:00
Eric House
a49c8c89ba fcm config file for xw4 variant 2019-06-23 10:09:59 -07:00
Eric House
d950ad695c remove debug toast that can't work from that class 2019-06-23 10:09:59 -07:00
Eric House
4bac49b76a rewrite of gcm_loop.py to use FCM
Works on my test VM. Untested on production.
2019-06-23 10:09:59 -07:00
Eric House
0c52d4e550 remove sms permissions from play store variant
and from a new debug variant so that can be tested. Add explanation to
be shown users who try to use the now-unavailable features.
2019-06-23 10:09:59 -07:00
Eric House
6ecfd2f20b add app-side support for firebase messaging
Works for xw4d variant only so far -- xw4 builds are broken!!!
2019-06-23 10:09:00 -07:00
Eric House
305f45dfc0 add variant option to build scripts
xw4 won't build for a while...
2019-06-23 10:09:00 -07:00
Eric House
7500e2f396 track and log lock owners correctly
Was assuming LIFO behavior, but with refcounting that's wrong and so I
was likely logging the wrong leaker in the case I'm trying to
duplicate. This simplifies the class while fixing that by tracking
owners as a Set.
2019-06-22 07:16:48 -07:00
WaldiS
6aad6d259b
Translated using Weblate (Polish)
Currently translated at 89.4% (683 of 764 strings)
2019-06-20 21:00:29 +02:00
WaldiS
c612570c12
Translated using Weblate (Polish)
Currently translated at 89.1% (681 of 764 strings)
2019-06-18 21:02:46 +02:00
Julio Yagami
6bf8fcef17
Translated using Weblate (Portuguese)
Currently translated at 51.6% (394 of 764 strings)
2019-06-18 21:01:45 +02:00
AB
36927380e2
Translated using Weblate (Ukrainian)
Currently translated at 0.5% (4 of 764 strings)
2019-06-18 21:01:44 +02:00
THANOS SIOURDAKIS
800292dfee
Translated using Weblate (Greek)
Currently translated at 0.9% (7 of 764 strings)
2019-06-18 21:01:43 +02:00
Eric House
63407ce5b5 wip: don't print stats header without stats 2019-06-14 16:37:29 -07:00
Eric House
93dd92c027 up strings for new release 2019-06-13 20:53:11 -07:00
Eric House
43c349cb2c make fdroid's flag explicit for variant 2019-06-13 20:52:45 -07:00
Eric House
44612c7177 cleanup: remove logging and comment 2019-06-13 20:40:38 -07:00
WaldiS
1b2750ef4d Translated using Weblate (Polish)
Currently translated at 26.8% (205 of 764 strings)
2019-06-13 10:30:08 -07:00
THANOS SIOURDAKIS
ab82aeb2c7 Added translation using Weblate (Greek) 2019-06-13 10:30:08 -07:00
AB
92f6eefc8d Added translation using Weblate (Ukrainian) 2019-06-13 10:30:08 -07:00
WaldiS
5a38089702 Translated using Weblate (Polish)
Currently translated at 6.5% (50 of 764 strings)
2019-06-13 10:30:08 -07:00
WaldiS
315a801d1d Translated using Weblate (Polish)
Currently translated at 6.4% (49 of 764 strings)
2019-06-13 10:30:08 -07:00
WaldiS
7b4654e522 Translated using Weblate (Polish)
Currently translated at 2.7% (21 of 764 strings)
2019-06-13 10:30:08 -07:00
Eric House
a8c45ee0ae include service delay stats for DEBUG builds
A start at determining of often there's a problem with Service not
scheduling work quickly enough.
2019-06-10 18:25:36 -07:00
WaldiS
981baed19d
Translated using Weblate (Polish)
Currently translated at 26.8% (205 of 764 strings)
2019-06-09 12:01:14 +02:00
Eric House
896d63bc48 build from new wordlist 2019-06-07 21:16:56 -07:00
THANOS SIOURDAKIS
d610102f26
Added translation using Weblate (Greek) 2019-06-07 19:35:25 +02:00
Eric House
a90ce05cd4 fix race condition leading to NPE 2019-06-03 20:47:36 -07:00
Eric House
c211b95070 wip: cleanup (not related to duplicate) 2019-06-03 20:47:25 -07:00
Eric House
3a4a8baf70 offer to email when unable to lock game
Only on non-shipping builds. This is attempting to catch a non-repro
lock-forever I'm trying to fix.
2019-06-02 09:02:25 -07:00
AB
6688ef08f7
Added translation using Weblate (Ukrainian) 2019-06-02 09:24:42 +02:00
Eric House
52d2694bc7 add support for 64-bit ARM
Add a third processor type to the .so, and fix first compile-time
warnings and then a few dumb bugs based on assumptions about ptr sizes.
Works to play networked games and browse wordlists, but is not
extensively tested and needs to be before release.
2019-05-29 19:19:00 -07:00
Eric House
fb15039b60 assert refcount never climbs after reaching 0
Looking for a common but not-yet-reproducible situation where the
gamelock gets stuck preventing a game from being opened, usually related
to a move arriving. One thing that looked wrong is it seemed possible to
have the refcount drop to 0 then get increased again, causing somebody
to thing he has a lock when it's actually unlocked. So assert to try to
catch that case (and synchronize to make it much harder.)
2019-05-29 15:51:09 -07:00
Eric House
d92c2b87c8 show SMS status in (fixes always-red indicator)
(Not duplicate-specific)
2019-05-29 09:43:12 -07:00
Eric House
30fd27aa53 change engine to optionally look at pending tiles
option not used ... yet
2019-05-26 17:59:00 -07:00
Eric House
838d0e5cc2 Makefile for CSW19 ... ish 2019-05-22 19:24:44 -07:00
Eric House
53e10ebafb add DBUtils utility for saving/restoring Serializables 2019-05-22 18:51:16 -07:00
Eric House
95bea0a13f fix npe sending relay invites to self
Needed to handle the case where both are null. Can't reproduce this in
release builds so likely doesn't justify a new release.
2019-05-21 13:18:27 -07:00
Eric House
fb88dfda8a show toast when dropping duplicate invite if DEBUG
I forget to enable that option too often. (No impact on release builds.)
2019-05-21 13:16:00 -07:00
Eric House
3aa1ed0187 remove exif data from image files
command: find . -name '*.jp*g' -o -name '*.png' | xargs exiftool -all=
Did this because fdroid is complaining about metadata and I can't see
any obvious changes in the appearance of the app, but it's not
well-considered. Back this out if there are problems.
2019-05-20 06:41:47 -07:00
Eric House
b65cff4c31 remove wince files 2019-05-20 06:26:57 -07:00
Eric House
e2cf25fc0a add menuitem to copy relayid to gtk clipboard
(I'm tired of typing it manually.)
2019-05-18 09:48:22 -07:00
Eric House
9b01d044f1 try to fix assertion by catching null UDP socket
I think there's a rare race condition here. Assuming it results from a
bad network state rather than two sends coming too quickly, respond to
not having a connection by killing the thread so the next send will
retry.
2019-05-16 12:23:33 -07:00
Eric House
107e6d0fca add more logging around failure-to-open-intent 2019-05-16 12:06:38 -07:00
Eric House
10fff616ae try harder to respond to an intent with a rowID
Failure to immediately get a lock for a rowID in an intent meant that
other intent processing kicked in, and might have done the wrong
thing. So now if there's a rowid in it we try nothing else. And we use
the GameLock callback mechanism to deal with the case where it's
temporarily unavailable, as it will be when an incoming move is being
dispatched to it.
2019-05-15 16:44:19 -07:00
WaldiS
0157cef8d5
Translated using Weblate (Polish)
Currently translated at 6.5% (50 of 764 strings)
2019-05-02 23:48:02 +02:00
WaldiS
e9a68ba7f3
Translated using Weblate (Polish)
Currently translated at 6.4% (49 of 764 strings)
2019-05-01 22:47:51 +02:00
Eric House
4919f487eb up strings for new release 2019-04-25 15:20:21 -07:00
Eric House
622fa53c64 always log stack of lock held more than 1 minute
(DEBUG only) I'm seeing deadlocks in a non-reproducible way and need to
get at the source. This should log the stacks of long-held locks, and
notify via Toast (when possible) when it occurs.
2019-04-25 11:54:11 -07:00
WaldiS
d13d8e79cb
Translated using Weblate (Polish)
Currently translated at 2.7% (21 of 764 strings)
2019-04-12 20:03:57 +02:00
Eric House
c757ba1386 use a single queue for all nbsproto threads
No point in worrying about whether a thread exists without emptying its
queue. Instead have a thread start when something's added to the queue
and exit when it's been empty for a while. Only trick is the need to
remember the phone number[s] on behalf of which a retry's necessary
because jni code is waiting to see if combining can be done.
2019-04-09 11:45:32 -07:00
Eric House
012ebe26f7 differentiate betweeen PENDING and RECENT tiles
Should not show the new you-can-lookup-uncommitted-words hint for
already-played words, so needed to be able to tell difference between
the two. Now you can -- and on the gtk side I draw them differently
because I can.
2019-04-09 09:51:04 -07:00
Eric House
fbf810444b log msgIDs (relay only for now)
I want to track and eliminate the duplication of the 0th message.
2019-04-09 08:59:57 -07:00
Eric House
fdb0e0d14b put message back in okonly dialog 2019-04-08 18:57:18 -07:00
Eric House
8f77a87a7a preserve checkmarks when invite dialogs rotate 2019-04-08 18:46:25 -07:00
Eric House
ec5162ddce trivial changes to force a build 2019-04-05 21:13:21 -07:00
Eric House
d6710622ad replace oft-firing assertion with logging
It's crashing all the time and involves a system that only exists in
debug builds. So I should understand the root cause, but other stuff
needs to get done first.
2019-04-05 13:30:23 -07:00
Eric House
4db2fd229b add hint explaining new tap-on-pending-words feature
And bring back another BoardCanvas hint that had been commented out.
2019-04-05 13:26:49 -07:00
Eric House
660cfa83a3 remove dead code 2019-04-05 12:47:07 -07:00
Eric House
fec0124f8c allow long-tap lookup of pending words too
When a word's been formed as part of the current turn, but not yet
committed, allow long-tap to trigger an offer to look it up online same
as for already-committed words. Allows checking the legality of
potential plays AND figuring WTF the hint feature just suggested.
2019-04-05 11:54:58 -07:00
Eric House
48880281dc add empty invitee list string for Bluetooth too 2019-04-04 21:32:28 -07:00
Eric House
dbdfa0b46c fix invite dialogs for landscape layout
Scrolling's needed in some cases, and you can't easily put a ListView
inside a ScrollView. So replace the ListView with a LinearLayout whose
contents I manage manually, and wrap the whole layout in a ScrollView.
2019-04-04 21:26:24 -07:00
Eric House
163eaf9612 fix invite-how alert not scrolling
By setting a custom view I wasn't using I broke scrolling of the
AlertDialog's list view which I was using. Known bug apparently....
2019-04-04 18:51:11 -07:00
Eric House
19fa3fce05 get rid of DispatchNotify
All it did was forward intent's data to MainActivity. Only question is
whether making MainActivity singleTask is a problem. We'll see.
2019-04-04 12:52:28 -07:00
Eric House
326bda70e3 cleanup 2019-04-02 21:55:01 -07:00
Eric House
2fd647d0aa make it a single thread 2019-04-02 21:55:01 -07:00
Eric House
758f08c7f3 move SMSPhoneInfo into its own class/file 2019-04-02 21:54:55 -07:00
Eric House
5e1e285046 make a common superclass 2019-04-02 21:49:16 -07:00
Eric House
35bcc3910c Rename SMSService NBSProxy, and make it not a service
Just keep a thread for each
phone we're sending to or receiving from, and pass them packets and
other things to send or (incoming case) process. So far the threads
don't die, but they will soon once there's nothing in their queues. Just
need to be sure there's no racing there.

This is to work around the frequent failure of the OS to pass enqeued work
into the service within a reasonable amount of time (I expect seconds, but see
delays of minutes or even hours.)
2019-04-02 21:48:58 -07:00
Eric House
0251ff0b44 use mutex to synchronize access to smsproto apis
I'm seeing my simultaneous access assert fail, so might as well break
fix it the foolproof way. It's background threads only that are calling
this stuff on Android so blocking them shouldn't hurt.
2019-04-02 16:08:08 -07:00
Eric House
7cc4ad6f2a up strings for release
This is just to try yet again to get past the play store console's
past-permissions bug
2019-03-25 15:41:40 -07:00
Eric House
425bedf464 reflect bt receipts in how long since saw device
Made no sense to use explicit scans only since typically you only do
that to get things going.
2019-03-25 13:53:25 -07:00
Eric House
2f264e36ca add makefile for new wordlist 2019-03-23 18:53:48 -07:00
Eric House
603daa447f remove separate marking of permissions as banned
It's enough to check manifest for their presence
2019-03-22 16:43:18 -07:00
Eric House
e2b7aceea7 Up version code and string to try a new play store release 2019-03-22 13:58:49 -07:00
Eric House
5f29af46e0 move SMSReceiver from main manifest to the others
Theory is that the store's buggy site is presenting its
banned-permissions interface because it's detecting a Receiver that
requires SMS_RECEIVE permission even though the permissions themselves
aren't there any more.
2019-03-22 13:22:18 -07:00
Eric House
dc5b134708 up version name (but not code)
This will NOT be released on Google Play, so no need to up code.
2019-03-22 10:51:07 -07:00
Eric House
e84f7ff960 fix broken symlink 2019-03-22 10:47:20 -07:00
Eric House
12d95fdd30 fix build script for new Play Store variant name 2019-03-22 10:15:27 -07:00
Eric House
dad649474e changelog and cleanup 2019-03-22 10:05:13 -07:00
Eric House
8a620533e5 fix multi-message aspect of smsproto
passes --run-sms-test now, and works on Android occasionally combining messages.
2019-03-21 18:49:19 -07:00
Eric House
ea1cc68eb0 cut logging in test app 2019-03-21 18:40:15 -07:00
Eric House
e799474e00 always respect user's local player name 2019-03-21 09:13:38 -07:00
Eric House
eb79393dc1 fix a couple of random crashes
a race condition and a misunderstanding
2019-03-21 09:12:32 -07:00
Eric House
83b8169a6b add useful stuff to build-info.txt inside .apk 2019-03-20 15:47:20 -07:00
Eric House
9374260c59 try to address one-time assert
and remove it from shipping build
2019-03-20 15:07:04 -07:00
Eric House
a7da0e33bb show the stalled-service alert based on pref
Allow users to turn the notification on; otherwise skip it. And set
the default on/off based on DEBUG type of build.
2019-03-20 14:53:08 -07:00
Eric House
b5714fadf8 add a bool resource matching BuildConfig.DEBUG
I want to be able to have some boolean prefs default based on whether
it's a DEBUG build.
2019-03-20 14:29:37 -07:00
Eric House
52f839e899 fix null procptr crash in jni
I can't reproduce this, but while testing recovery from DatagramSocket
recreation in RelayService got enough to know that somehow a timer's
procptr's not set. So test before calling, and log instead of crashing.
2019-03-20 13:33:30 -07:00
Eric House
b03f767e6c get another DatagramSocket when ours goes bad
Fix longstanding bug triggered by something as simple as putting device
into and out of airplane mode. Once the class-variable socket was
created it was never replaced. Now respond to exceptions that mean it's
useless and set it to null so existing logic will recreate it.
2019-03-20 13:33:21 -07:00
Eric House
2916e1d6cb tweaks to logging and imports; should have no effect 2019-03-20 07:23:34 -07:00
Eric House
1eccbebb95 report inability to get locks in travis debug builds 2019-03-19 09:15:27 -07:00
Eric House
1291310a0c track all pending service Intents; warn of stalls
When enqueuing Intents for any of the three services, cache the
Intent. When onHandleWork() is called, remove the equivalent cached
intent. Then periodically check for intents that have been stored for
more than 60 seconds, and post a Notification alerting user to
stall. The user will likely have noticed that messages aren't flowing,
so this will simply explain the problem. Includes an "email author"
button.
2019-03-19 08:39:16 -07:00
Eric House
f5afba8fd4 cleanup and refactor
Move some work into superclass where instrumentation can be added to
greater effect. And remove from BTService an earlier attempt (at stall
detection.)
2019-03-19 08:16:30 -07:00
Eric House
99c6e38ff0 refactor: new constructor for common case 2019-03-19 08:06:16 -07:00
Eric House
21b0815923 make msgNo reflect srcID, not channelNo
It's more useful if it's per-device unique within a game. (Just used for
debugging now, so no impact on anything.)
2019-03-18 10:55:40 -07:00
Eric House
89cb97c3bb additions for debugging
toward tracking down relay stalls, log a bit more in resend process and
add UI to support an option where there's no reliance on
polling (i.e. FCM only)
2019-03-17 21:17:36 -07:00
Eric House
aa2564114a replace assert with logging 2019-03-17 18:26:43 -07:00
Eric House
bb9facfbd2 Merge remote-tracking branch 'weblate/android_translate' into android_translate 2019-03-17 14:01:06 -07:00
Eric House
0be3bb192d Wait for ACK to remove stored message
Bringing in a change that's been on the production relay for a while but
apparently didn't pass tests locally. Now it does.
2019-03-17 11:52:48 -07:00
Eric House
9bde550455 apply ordering and limit correctly 2019-03-17 11:38:00 -07:00
Eric House
0b0e4af977 up version strings 2019-03-16 21:11:55 -07:00
Eric House
efb6a93d7c add missing AndroidManifest.xml files for new variants 2019-03-16 20:53:16 -07:00
Eric House
9ae77bce13 use latest nbsplib 2019-03-13 14:38:03 -07:00
Eric House
e01bda552e change to work with changed NBSProxy API 2019-03-13 14:35:28 -07:00
Eric House
29ebcf0c20 API's changed 2019-03-13 14:35:23 -07:00
Eric House
61395f07e9 use the latest NBSProxy dev release 2019-03-12 07:05:51 -07:00
Eric House
91ff2175f6 add logging of CurGameInfo
Trying to track down why some player names aren't preserved
2019-03-12 07:05:12 -07:00
Eric House
79aab3ead1 override toString() for debugging 2019-03-11 10:46:56 -07:00
Eric House
21debf7af6 add missing consts 2019-03-11 10:32:22 -07:00
Eric House
7e06512e54 change emacs compile command (in comment)
No point defaulting to something that no longer exists
2019-03-11 09:57:16 -07:00
Eric House
080d14a02b fix symlinks post rename 2019-03-11 09:51:23 -07:00
Eric House
3c4cc6a1b7 fix broken symlink 2019-03-10 20:38:11 -07:00
Eric House
ab491ebcb4 change name of variant -- it's not the main one anymore 2019-03-10 19:25:57 -07:00
Eric House
f8623cd407 check if permission in manifest
I got bitten when creating a new variant leaving the permission out of
the manifest but using a config flag to claim it was there. Better to
have just one place to configure that. So check for presence in the
manifest and, for now, assert that that matches the isBanned flag. Soon
the isBanned flag can be removed.
2019-03-10 19:15:30 -07:00
Eric House
116f3f4274 add retain()/release()
Seems to work but needs testing!
2019-03-10 18:42:49 -07:00
WaldiS
5e3bedc3eb
Translated using Weblate (Polish)
Currently translated at 1.8% (14 of 764 strings)
2019-03-10 18:03:01 +01:00
Eric House
21158faa71 up version code to try another gps release 2019-03-09 17:38:18 -08:00
Eric House
5cc57919f5 add new Variant for github & sourceforge releases
and log permission check results
2019-03-09 14:07:06 -08:00
Eric House
2744649e48 one less malloc 2019-03-09 12:12:47 -08:00
Eric House
de7be6cf44 tweak UI with longer string 2019-03-09 09:20:37 -08:00
naofum
dd36d393e0 Translated using Weblate (Japanese)
Currently translated at 75.9% (580 of 764 strings)
2019-03-09 08:52:05 -08:00
Peeter Angelo
acd35c103b Translated using Weblate (Czech)
Currently translated at 14.5% (111 of 764 strings)
2019-03-09 08:51:20 -08:00
Eric House
1f195ad1e6 tweak string 2019-03-09 08:17:50 -08:00
Eric House
565f688252 don't capture lock stack in release builds 2019-03-09 06:59:31 -08:00
Eric House
085963b76c unlock lock we won't be keeping
This might fix the occasional game permalock.
2019-03-09 06:40:04 -08:00
Eric House
c2441c30f4 fix a likely-fluke NPE with a test
It seems impossible for the menu to be getting update without init()
having been called, but that must be what happened. To check for null.
2019-03-08 22:14:57 -08:00
Eric House
f890d74e63 fix invite not coming up after perms warning dismissed
or when it's not shown at all because the not-again checkbox is checked
2019-03-08 21:56:16 -08:00
Eric House
d914706ef8 cleanup 2019-03-08 21:32:52 -08:00
Eric House
f934ac3c5c up version of NBSProxy lib 2019-03-08 20:11:19 -08:00
Eric House
dbed7e29cc fix npe 2019-03-08 17:40:27 -08:00
Eric House
eb33d18390 add not-again checkbox to remove-sms-from-game alert
Some people will decide to leave SMS comms in while I look for an
alternative. Maybe. Don't show them the same alert every time they open
the game. In the process removed what seemed to be a duplicate ivar.
2019-03-08 14:18:56 -08:00
Eric House
f05c6862f9 refactor alerts code
Should be no change here, but the goal's to make it easier to mix
functionality, e.g. adding notagain checkbox to other types.
2019-03-08 13:29:30 -08:00
Eric House
0df3889030 don't show sms-failed toast when permission is banned 2019-03-08 12:58:00 -08:00
Eric House
3fd9a066cb move constant 2019-03-08 11:16:21 -08:00
Eric House
5a8e21468f add Overrides as part of sanity check 2019-03-08 11:10:16 -08:00
Eric House
21220bc839 include name of game being deleted 2019-03-08 09:46:27 -08:00
Eric House
7f405a3a40 update web page (esp. fix style for device display) 2019-03-08 09:20:48 -08:00
Eric House
0972d3d99f cleanup 2019-03-08 09:20:22 -08:00
Eric House
69046c5f2f give new variant the right icons 2019-03-08 07:18:49 -08:00
Eric House
2ba8d83cf6 update changes log 2019-03-07 18:30:52 -08:00
Eric House
d55916f583 oops 2019-03-07 18:18:50 -08:00
Eric House
ce2ec03d3e relay tracks variantCode int, not string 2019-03-07 18:12:26 -08:00
Eric House
fbba6f3247 add a case for Signal as default SMS app 2019-03-07 17:40:16 -08:00
Eric House
5eb29a0c21 display the Banned alert from invite-choice dialog 2019-03-07 09:13:50 -08:00
Eric House
a91c0e2cbf add non-mobile number if user confirms
Fix logic error that didn't proceed with the number-add in the
non-mobile case.
2019-03-07 08:39:20 -08:00
Eric House
a561899021 try various recipes for launching SMS app
There's no one way to launch an SMS app with a ready-to-send
invitation. So try the two that work on our two phone/app combinations,
iterating until startActivity() succeeds. The code's set up to have new
recipes added easily.
2019-03-07 08:06:07 -08:00
Eric House
188a5d8387 post a tip/warning when new invite-by-sms-app chosen 2019-03-07 07:48:31 -08:00
Eric House
ef27ffaa02 send an int code rather than a name 2019-03-07 06:28:46 -08:00
Eric House
8a4d4ec5bf warn when 'sms data' selected in build where it's banned 2019-03-06 22:38:53 -08:00
Eric House
a79b18b9b7 more tweaks 2019-03-06 14:31:44 -08:00
Eric House
7ffa2ed4fc remove logging 2019-03-06 14:05:15 -08:00
Eric House
d3abd31220 new method stub to fix fdroid build crash 2019-03-06 13:26:05 -08:00
Eric House
51c2ecd48a script to build all possible variants 2019-03-06 13:19:55 -08:00
Eric House
ac8ceec656 removing permissions from the Play Store version 2019-03-06 13:09:42 -08:00
Eric House
6267eb9c4f use NBSProxy if available
Lots of work dealing with banned permissions (SEND_SMS and
RECEIVE_SMS). First, if they're banned and NBSProxy is installed, just
use it as if the permissions had been granted. When it's not there,
explain at various points where users will otherwise be confused: when
they try to invite using data sms, or when they open a game that already
uses it.)
2019-03-06 12:39:08 -08:00
Eric House
7e4313e071 support setActionPair() for okOnly alerts too 2019-03-04 10:45:15 -08:00
Eric House
17e8844378 cut some logging 2019-03-04 07:43:28 -08:00
Eric House
91b7cf8bd9 remove misplaced assert
It's an error to use an env with the wrong thread, but it IS possible
for more than one thread to be associated with the same env. So don't
assert to the contrary.
2019-03-03 21:01:23 -08:00
Eric House
eeddd8d7cb fixing refcounting and adding logging
Seeing the occasional crash and trying to plug leaks that might be
contributing. I think I fixed the Gameptr.finalize() assertions I've
been seeing forever but the thread match assertion remains. Logs will
help catch that.
2019-03-03 14:40:07 -08:00
Eric House
cec379bd02 remove logging and reformat: no change 2019-03-03 14:11:44 -08:00
Eric House
1575d70ab9 return supported types as list, not set
I was seeing them displayed in different orders where I want to control
the order instead.
2019-03-03 14:07:40 -08:00
Eric House
8336a338f8 use constant APPLICATION_ID instead of method call 2019-03-03 11:39:10 -08:00
Eric House
cae90c4c07 remove some logging 2019-03-03 11:39:10 -08:00
naofum
09affc451d
Translated using Weblate (Japanese)
Currently translated at 75.9% (580 of 764 strings)
2019-03-03 11:17:45 +01:00
Eric House
4cbfde6d95 make setActionPair work for confirmThen alerts too
(To be used shortly)
2019-02-28 16:03:46 -08:00
Eric House
415ce0f5a2 recast SMSService as a JobIntentService
Didn't think it was required, but once the app started getting messages
in the background it stoped working or crashed. Changes are minimal
because this service isn't responsible for receiving messages: it
doesn't have the long-lived threads of the BT and Relay services.
2019-02-27 07:25:33 -08:00
Eric House
20cd99f73b add debug-only checking for thread safety
Lots of threads call the smsproto code now so the existing check was
failing. Replace it with one that ensures that only one thread at a time
is running the code. Debug-builds only.
2019-02-27 07:13:38 -08:00
Eric House
5207de564a Let's test this jitpack stuff on Travis
Importing a library but not using it yet
2019-02-26 21:33:39 -08:00
Eric House
b0d3383c28 more data with my SMS
And catch an exception starting SMSService in background
2019-02-26 21:27:31 -08:00
Eric House
6eb6038935 make result -1 if will otherwise trip asserts. 2019-02-26 18:46:55 -08:00
Eric House
ac0fe68ee0 logging toward finding who's sending or reporting 0 2019-02-26 15:03:55 -08:00
Eric House
5f167e2a5e pull nbs port-checking over from NBSProxy 2019-02-26 14:43:26 -08:00
Eric House
d1881e7fc4 logging toward tracking a rare assertion failure 2019-02-26 14:33:18 -08:00
Eric House
33491a5376 add extra explanatory text to phone number invite dialog
Set different expectations based on whether the invitation's by NBS or a
launch of the messaging app.
2019-02-26 12:25:17 -08:00
Eric House
c78a3afb36 distinguish between NBS and SMS
What I've been calling SMS is now "data sms" (or "nbs", in
code). There's a new way of inviting, called "User Sms" or somesuch,
that launches the user's SMS app with a URL and phone number, much like
email (save that no addressing is required by the inviter.) This new way
won't be involved in the ban on SMS permissions. (But play by NBS is
still awesome and will stay where it can.)
2019-02-26 11:28:37 -08:00
Eric House
22711e75a5 that's already done 2019-02-23 20:55:31 -08:00
Eric House
92dde5332a put back the nbs port 2019-02-23 17:32:03 -08:00
Eric House
b6551abd2f some cleanup, e.g. to assert my signals are valid 2019-02-22 21:25:26 -08:00
Eric House
97eb6018d9 comment out dead code I keep reading 2019-02-22 19:59:55 -08:00
Eric House
956e9c540f fix valgrind-noted empty array cruft. 2019-02-22 19:29:56 -08:00
Eric House
1e0db1fca7 fix defines and compile that then broke 2019-02-22 17:55:09 -08:00
Eric House
e1d05207b4 new version code to replace bad upload 2019-02-21 21:33:57 -08:00
Eric House
bad3274c9c fix broken noSMS variant
needed SMS permissions in a new xw4 manifest
2019-02-21 21:30:59 -08:00
Eric House
283bf2e285 remove SMS_BANNED stuff for now 2019-02-21 11:28:13 -08:00
Eric House
7df3d6ad9f up changelog 2019-02-21 10:51:11 -08:00
Eric House
f72a88f46e exit thread when BT turned off
(The test was in the thread this replaced.)
2019-02-21 10:45:50 -08:00
Eric House
cf8fe20e48 put back SMS permissions
March 9's the deadline, so let's not remove it yet!
2019-02-21 10:24:02 -08:00
Eric House
7d48fdd00a make packet accumulator a thread that sends
Get rid of the single sender thread and the complexity of querying
individual queues for their state (and the slowdown that happened when
successful writes had to wait for those to devices that weren't
responding). Instead each PacketAccumulator does its own waiting with
timeouts and backoffs, wakes itself when appropriate, and periodically
sends if it can make a connection. Now when there are a bunch of
messages ready they'll get sent pretty quickly once connections to the
remote device start to be successful.
2019-02-20 21:54:51 -08:00
Eric House
89338f43dc each message gets a localID so logs can show progress
And rewrite toString()
2019-02-20 12:50:29 -08:00
Eric House
3e1503e6a6 add another DeadlockWatch (and import already) 2019-02-20 12:20:39 -08:00
Eric House
c822f4b1a6 put Killer back: device can receive but never process
A device where the OS isn't servicing enqueueWork() requests won't write
back to sockets it accept()s, causing the sender's writer to block
forever. So give it 30 seconds then kill the socket.
2019-02-20 11:22:51 -08:00
Eric House
274e7c6c4b fix NPE (by inspection, from crashlytics report) 2019-02-20 10:38:27 -08:00
Eric House
c2a4c07746 don't enqueue dupes of messages already in queue
No point in giving a spot to something the receiver will drop as a
duplicate.
2019-02-20 10:29:24 -08:00
Eric House
87a27e7630 update status more often (as old code did) 2019-02-19 21:25:28 -08:00
Eric House
1a6b325722 fix concurrent access exception and too-slow sends
if we successfully send, we should reset the backoff so we try again
quickly. Especially at a time when only one message is sent per connection.
2019-02-19 21:25:28 -08:00
Eric House
76e8876df2 change key to force new value
fixes what was probably a crash only for me, but....
2019-02-19 21:25:20 -08:00
Eric House
68db5145ec report invitation success even if dict download needed 2019-02-19 20:56:24 -08:00
Eric House
d33593339f use https scheme for dict downloads 2019-02-19 20:55:31 -08:00
Eric House
e970659b9d Move back to old one-msg-per-connect() model
Add support for the old protocol, and define to use it. After the next
release has been adopted and everybody can read the new protocol another
release will turn it on.
2019-02-19 18:31:20 -08:00
Eric House
1d0ed70f9c add not-again checkbox to BAD_BT_PROTO dialog
Won't help the old-build side of the exchange of course.
2019-02-19 08:56:58 -08:00
Eric House
a38a31837b prune only those messages successfully sent
Fix race condition that would have cleared all messages including those
added after a send began. In the process, move to storing outbound
messages individually rather than concatenated in their stream format.
2019-02-19 08:31:49 -08:00
Peeter Angelo
54c0443856
Translated using Weblate (Czech)
Currently translated at 14.5% (111 of 764 strings)
2019-02-19 10:10:21 +01:00
Eric House
ff5d25a53c add alert to launch app when OS not scheduling service
Set a boolean every time app's upgraded, and clear it on first launch of
MainActivity. In between, if we try to launch the BTService but the OS
doesn't schedule it, post a notification asking user to launch the app.
2019-02-18 22:12:43 -08:00
Eric House
4c9f619a19 exit threads when BT off; add util to report deadlocks
I've seen a deadlock in the BT stuff. Now they'll be caught and reported
via Crashlytics on DEBUG builds.
2019-02-17 12:49:17 -08:00
Eric House
276abe6441 always increment failure count on send failure 2019-02-16 10:07:29 -08:00
Eric House
b5659f0e5c Rewrite BT proto to batch messages
Lots of changes. Old BT proto is no longer compatible. New one
batches messages per device and sends all on a single connection.
The queue (now a single buffer) is now a static global and the thread
that services it doesn't die (but gloms onto whatever Service instance
is most recent.) Code to pack and unpack the protocol can probably be
reused for wifi-direct or any other pass-through transport.
2019-02-16 09:07:20 -08:00
Eric House
4f4deec7ba replace some firing asserts with log messages
I'm getting crashes on a device with an iffy wifi connection and no SIM.
May need to look into these.
2019-02-16 07:28:14 -08:00
Eric House
41aef60878 don't open game just because it was created
Posting a notification is enough. And existing code already handles the
missing dict case, so GamesListDelegate doesn't even need to know.
2019-02-13 08:46:06 -08:00
Eric House
01533e6897 double scan progress time
Since the BT stuff tends to timeout late when failing, this looks better.
2019-02-13 07:29:18 -08:00
Eric House
273e66fd07 add env to map immediately, in initGame()
I'm seeing an assertion failure in cleanup that could be explained by
the cleanup happening when initGame() has been called but no subsequent
jni method that would have added the env to the map. So let's add it
immediately so that can't happen.
2019-02-13 07:13:54 -08:00
naofum
bd631db7d2 Translated using Weblate (Japanese)
Currently translated at 74.3% (568 of 764 strings)
2019-02-12 18:40:16 -08:00
Eric House
0a5d74ab2f unselect any game moved into a closed group
Fixes GameOver game moved via "archive" checkbox remaining selected
2019-02-12 18:14:57 -08:00
Eric House
b5ff337381 don't move selected games via context menu
Both ways of invoking move-to-group were working on the set of selected
games. Instead pass what's meant to be operated on as a parameter.
2019-02-12 07:51:21 -08:00
Eric House
0f8e55a260 put GameOver view layout into a ScrollView
When device in landscape the archive box is otherwise unreachable on a
four-player game
2019-02-12 07:47:57 -08:00
Eric House
eafe6cd06f make GamePtr AutoCloseable and use where possible 2019-02-12 06:13:36 -08:00
Eric House
b1a4b1a030 Make JNIThread autoclosable and use everywhere
JNIThread is somehow sticking around sometimes and holding the lock for
a game so that that game can never be opened again. On the theory that
there's some place retain() was called but not release(), use the thing
in try-with-resources wherever possible. Which is pretty much
everywhere.

Also added age to the lock-holder report being uploaded.
2019-02-11 20:39:17 -08:00
Eric House
9fe01047b1 include stack of lock owner when logging failure to lock 2019-02-11 07:52:22 -08:00
Eric House
88838d6c0c Fix NPE when url for delete game has changed
I think it's only an issue for debug builds where I've manually pointed
at a different server, but just in case.
2019-02-11 07:32:17 -08:00
Eric House
ec4711f3ba make text in new GameOver alert bigger
To match how it was when using the system-provided view.
2019-02-11 07:29:34 -08:00
naofum
67cc88ea4e
Translated using Weblate (Japanese)
Currently translated at 74.3% (568 of 764 strings)
2019-02-11 12:09:26 +01:00
Eric House
7f2e3207be report stack of lock owner to crashlytics when can't get it
I'm seeing something permanently lock a game so it can't be opened. So
add code to report the stack of the owner to Crashlytics when opening
fails 3 times in a row. It's stubbed out for non-debug builds.
2019-02-10 20:02:43 -08:00
Eric House
813cf4f961 Add custom GameOver alert for GameOver with Archive checkbox
I didn't like having to re-open a game to archive it after
rematching, so now there's a checkbox that lets you archive it after
either rematching OR just using OK to dismiss the alert. Also fixed
rematch of a solo game causing new game to be created in Archive
group if that's where the source game was.

squash me
2019-02-10 14:22:22 -08:00
Eric House
ab69cd8b1f Merge remote-tracking branch 'weblate/android_translate' into android_translate 2019-02-10 09:01:14 -08:00
Eric House
d53ea5c433 up copyright year 2019-02-09 16:16:54 -08:00
Eric House
2eaf86ed14 add git rev to crashlytics reports 2019-02-09 11:13:32 -08:00
Eric House
01d74e91de plug leak 2019-02-08 22:29:18 -08:00
Eric House
8f6745a308 avoid crashes when BT turned off
Test at enqueueWork() and onHandleWorkImpl(). Seems to do it. Maybe
turning it off mid-send will still crash...
2019-02-08 22:22:03 -08:00
João Vitor Ferreira Cavalcante
cfc9466efd
Translated using Weblate (Portuguese)
Currently translated at 51.6% (394 of 764 strings)
2019-02-09 02:09:26 +01:00
Eric House
30f70db59b don't create threads we won't use 2019-02-08 14:37:58 -08:00
Eric House
6b449bb079 null listener thread ref so will be restarted
Once it died it stayed dead: bad.
2019-02-08 14:11:35 -08:00
Eric House
3023ae1af6 cleanup 2019-02-08 13:48:40 -08:00
Eric House
fe721edb97 Recast BTService as a JobIntentService
Got tired of the space the forground-service notification icons were
taking. So now BT sends and receives are done via static threads and
onHandleWork(). The send thread times itself out quickly. The receive
thread doesn't yet. We'll see how long the OS lets it run and what
needs to be done to deal with that.
2019-02-08 13:23:07 -08:00
Eric House
e6b59ea11d add debug-only option for invitee players to be robots
It's useful when testing to have the remote device play without human
interaction. So add an option, and UI to trigger it, for the players
created remotely in response to an invitation to be robots. There are
guards in place to catch the feature slipping into a release build.
2019-02-07 08:17:54 -08:00
Eric House
c97e167e1e remove some logging 2019-02-06 22:55:31 -08:00
Eric House
ff45340eb8 remove methods overridden just for logging
looks like I've fixed the crash I wanted to diagnose.
2019-02-06 22:37:52 -08:00
Eric House
9a4fb44e72 fix relay interactions again
Eliminate the writer thread, since onHandleWork() is already getting
called on a thread and can process the outbound queue itself. And get
rid of reader thread needing to wait for an instance of the RelayService
to be available to process a packet (which was taking 5-10 seconds all
the time): just post received packets via an enqueueWork() call using
the app context that's always available.
2019-02-06 22:32:46 -08:00
Eric House
e62e51f9cd pass context and use to post lock-failure toast 2019-02-06 19:43:54 -08:00
Eric House
f5c9962b66 tweak/reduce logging 2019-02-06 19:36:17 -08:00
Eric House
895b19a097 move constant from XWApp to build.gradle 2019-02-06 10:44:21 -08:00
Eric House
f92b0d7ac0 avoid NPE (and log to root-cause it later) 2019-02-06 09:06:25 -08:00
Eric House
ab0469fe39 ensure writer gets run every time OS schedules via onHandleWork() 2019-02-05 09:58:39 -08:00
Eric House
bf2ab49c20 remove some logging 2019-02-05 09:37:39 -08:00
Eric House
bd35503daa fix NPE and let GameSummary stay until replaced
GameListItem was clearing its summary when kicking off a replacement
load. Instead keep the old around in case somebody wants it (e.g. to
figure out what menus to enable) until the reload finishes.

Also add logging of how long loading takes. I think a cache might be
called for.
2019-02-05 07:44:16 -08:00
Markus Enzenberger
7d8c013492
Translated using Weblate (German)
Currently translated at 100.0% (764 of 764 strings)
2019-02-05 10:09:17 +01:00
Eric House
38f0fc6fd1 move invite button above button bar.
(It's more frequently used)
2019-02-04 17:56:23 -08:00
Eric House
64c6d03392 add context comment for new string 2019-02-04 17:33:03 -08:00
Eric House
908f5a64e7 Merge branch 'android_branch' into android_translate 2019-02-04 17:28:06 -08:00
Eric House
ce03ab7532 cleanup via new macro 2019-02-04 14:38:40 -08:00
Eric House
3810d11e26 remove logging 2019-02-04 14:27:43 -08:00
Eric House
e1f03662c3 fix malformed xml string
Weblate bug?
2019-02-04 13:35:34 -08:00
Eric House
bdf1bd3b84 fix problems with RelayService
Darned thing was dropping packets, failing to connect games built in
response to invitations, and otherwise misbehaving. First was due to not
resheduling when exited with outbound packets in queue; second to not
overriding relayNoConnProc() (due to signature change.) Though it still
happens occasionally.... Also added timestamps to track how long it
takes a packet to be sent and ACK'd.
2019-02-04 13:28:05 -08:00
Eric House
328440abc3 add rowid to NoSuchGameException 2019-02-04 08:58:50 -08:00
Eric House
5886a97a53 fix NPE (and tweak logging) 2019-02-03 10:36:54 -08:00
Eric House
74cf4b0974 add flavor to toasted got-fcm message
So I can tell the apps apart
2019-02-02 22:39:57 -08:00
Eric House
e98519ea38 stop storing fcm keys and similar data in postgres arrays
Not sure why I was doing this, but it's not worth the
trouble (e.g. stopping updates of other data to fix an android bug
sending too many reregistration messages.) So now just use the first
element of arrays, replacing what's there instead of prepending. Ideally
those columns would not be arrays, but that's a harder change.
2019-02-02 21:49:50 -08:00
Eric House
23fe3a1dd6 make script executable 2019-02-02 15:50:17 -08:00
Eric House
49ef455e50 display latest FCM receipt as part of netstats for relay 2019-02-02 15:18:45 -08:00
Eric House
be6b74ab12 use a constant jobID for enqueueWork()
That each VM instance had a different id might be why I was
crashing. We'll see.
2019-02-02 13:35:38 -08:00
Eric House
4a335522d2 fix so success detected from new API 2019-02-01 20:51:07 -08:00
Eric House
b8dafb8178 remove debug-only assert I'm seeing
Good to know it's happening; now don't crash!
2019-02-01 19:39:23 -08:00
Eric House
1a3aa9f8d1 put back pref controlling whether FCM receives are Toasted 2019-02-01 19:27:12 -08:00
Eric House
9f7899cd7c make md5sum calculation available everywhere
I want to log sums to see when they arrive on relay. And also add some
missing @Overrides I noticed.
2019-02-01 17:01:32 -08:00
Eric House
236be21a78 put up toast when FCM message received
It's too useful to live without. So: tap into the static list of live
Delegates, and if any of them has an Activity available use it to run
Toast on UI thread. Otherwise there will be no display.
2019-02-01 16:49:12 -08:00
Your Name
cd777f3b9c pull and display new field 2019-02-02 00:20:35 +00:00
Eric House
c0783fba16 don't save duplicate devIDs
There's likely a bug in Android now where I'm registering over and
over though the fcm id hasn't been changed. That's wrong, but it's
also wrong (and filling up the db) to register a duplicate as if it
were new. So stop that.
2019-02-01 12:13:05 -08:00
Eric House
f6895aacff make https the default for prefs-alterable strings
And change the keys so all local changes get reset
2019-01-31 15:22:25 -08:00
Eric House
48c331fd56 use https everywhere. And rewrite URLs if necessary. 2019-01-31 12:57:31 -08:00
Mesut Akcan
8cd31b1250
Translated using Weblate (Turkish)
Currently translated at 0.8% (6 of 764 strings)
2019-01-31 14:09:09 +01:00
Mesut Akcan
c6ac53cb3f
Added translation using Weblate (Turkish) 2019-01-29 22:44:02 +01:00
Eric House
4c2e17064c add some logging around RelayService lifecycle 2019-01-29 11:15:46 -08:00
Eric House
e04f8d7fba fix just the warnings; VSIZE is safe 2019-01-29 09:15:56 -08:00
Eric House
15a2897112 Revert "toward compiling with gcc8"
This reverts commit d293517e7c.
2019-01-29 09:05:54 -08:00
Eric House
d293517e7c toward compiling with gcc8
My VSIZE is no longer legal, and apparently there's no workaround (no
way to safely figure the length of an array whose size is known at
compile time.) To avoid the risk of duplicating little constants, added
macros that define length in a way a new VSIZE can pick it up. Couldn't
make that work for struct field arrays, however, so there I'm using
constants.
2019-01-28 17:24:53 -08:00
Eric House
b616f79cfd remove the last critical error 2019-01-27 09:23:56 -08:00
Eric House
f7b6d30dc2 fix another critical warning 2019-01-27 09:12:58 -08:00
Eric House
2b5b4ba982 fix gtk critical errors 2019-01-27 08:46:51 -08:00
Eric House
a14b43bba0 communicate variant to relay, and store in new column 2019-01-27 06:31:21 -08:00
ssantos
8716832999
Translated using Weblate (Portuguese)
Currently translated at 51.6% (394 of 764 strings)
2019-01-27 10:04:36 +01:00
Eric House
316bf0060b fcm config file for xw4 variant 2019-01-25 11:36:24 -08:00
Eric House
96ad615a73 remove debug toast that can't work from that class 2019-01-25 09:24:21 -08:00
Eric House
b4096de8ca rewrite of gcm_loop.py to use FCM
Works on my test VM. Untested on production.
2019-01-25 09:21:37 -08:00
Eric House
a4152239f6 remove sms permissions from play store variant
and from a new debug variant so that can be tested. Add explanation to
be shown users who try to use the now-unavailable features.
2019-01-24 18:45:24 -08:00
Eric House
88a440acc3 add app-side support for firebase messaging
Works for xw4d variant only so far -- xw4 builds are broken!!!
2019-01-24 18:20:01 -08:00
Eric House
4ee76c72a6 add variant option to build scripts
xw4 won't build for a while...
2019-01-24 17:59:50 -08:00
Hosted Weblate
e20be83a58
Merge branch 'origin/android_translate' into Weblate. 2019-01-22 09:21:13 +01:00
Allan Nordhøy
fc9d1d2346
Translated using Weblate (Norwegian Bokmål)
Currently translated at 85.7% (655 of 764 strings)
2019-01-22 09:21:12 +01:00
Allan Nordhøy
4b8f39552f
Translated using Weblate (English)
Currently translated at 100.0% (764 of 764 strings)
2019-01-22 09:21:09 +01:00
Eric House
fb5fee3483 tweak string 2019-01-21 21:48:58 -08:00
Bernard Massot
6af47f9bc2 Translated using Weblate (French)
Currently translated at 97.6% (746 of 764 strings)
2019-01-21 21:48:58 -08:00
Louies
f45e001e7a Added translation using Weblate (Chinese (Traditional)) 2019-01-21 21:48:57 -08:00
Eric House
506ddc8f7a fix logic error in permissions callback
Somehow I forgot what params were and decided that array's length needed
to match another's.
2019-01-21 20:44:16 -08:00
Eric House
06fe5894b9 fix invitations creating a second activity stack
Looks like certain launches that went through DispatchNotify could
create a second "instance" of the app. Giving that Activity a launchMode
of singleTask fixes this (singleTop does not.)
2019-01-21 18:57:38 -08:00
Eric House
51c7752830 use same launch flags for all self-launches
Launching a game in response to a wordlist it needing being downloaded
went through a different Intent-creation path from the rest, and
resulted in a second instance of the app showing in the launcher. This
shoudl fix that. I don't *think* it's the only way I'm getting second
instances or stacked GamesLists, but it should get fixed.
2019-01-21 18:57:38 -08:00
Eric House
52d983e0d8 assert (on DEBUG builds) that MainActivity is never sublaunched
I think this might help catch the instance duplication I'm seeing very
rarely.
2019-01-21 18:57:38 -08:00
Bernard Massot
41f5c6afa2
Translated using Weblate (French)
Currently translated at 97.6% (746 of 764 strings)
2019-01-20 16:19:53 +01:00
Eric House
0754e0db8e remove hard-coded assumption about apk name
So can use the thing to sign-and-install local fdroid builds
2019-01-18 17:46:02 -08:00
Eric House
837ff1f8fc Give each variant a name, and include in About alert.
I modified existing translated strings, adding the new clause. Not doing
that would cause the existing strings to be stripped because they'd no
longer have the matching set of format specifiers.
2019-01-18 16:45:27 -08:00
Eric House
f072736bb8 need to call doResume() twice
Calling it only once on acquiring lock where before it'd been called
twice meant ConnStatusHandler never got initialized. Bad.
2019-01-18 07:32:58 -08:00
Eric House
4878afb185 remove misplaced assert 2019-01-18 06:51:23 -08:00
Hosted Weblate
03b9b3e499
Merge branch 'origin/android_translate' into Weblate. 2019-01-18 13:59:52 +01:00
Eric House
ae56f23f66 remove misguided Assert that's firing 2019-01-17 15:16:54 -08:00
Eric House
026d6d5c5e Change GameLock API (should be no behavior change) 2019-01-17 12:46:51 -08:00
Eric House
f436090c6f install listeners immediately after setting them
Fix a race condition introduced by making initing jnithread be
asynchronous: all the layout that was supposed to happen after listeners
were added instead happened before, so that they weren't there to be
installed as part of layout. So now, after adding them, get them hooked
up to the UI. (The complexity of this is all historical: at some point
the listeners were getting added BEFORE there were views to attach them
to, so they were cached and added later. Probably now they could simply
be installed as part of adding them. But I'm not doing that now.)
2019-01-17 12:28:01 -08:00
Eric House
95df560a40 update changes: sms will be ripped out alas. 2019-01-17 08:51:13 -08:00
Eric House
385f98f038 check for null 2019-01-16 22:17:54 -08:00
Eric House
d94217cc06 Make Board wait a bit for lock on opening
Was seeing frequent failure to open games as JNIThread.getRetained() was
unable to get a lock without waiting. Which it can't do on UI thread. So
added a method to GameLock that takes a callback to be called when the
lock's obtained, with the actual waiting done on a local thread. Then
fixed BoardDelegate a bit to not crash while waiting for the callback.
2019-01-16 21:45:39 -08:00
Eric House
a8872df5ed cleanup: I like the call-chain style better these days 2019-01-16 20:32:44 -08:00
Eric House
20359e50da log GameLock failure only when it's a result 2019-01-16 13:24:46 -08:00
Eric House
4c9ded77bf assertion says had race condition; fix it
Use a set instead of a singleton so a late clear doesn't overwrite an
early set.
2019-01-16 11:31:54 -08:00
Eric House
a93b1da6fa up client version
Will allow to distinguish on relay what clients can receive GCM.
2019-01-16 11:14:35 -08:00
Eric House
ddf12b6523 resend all when come to foreground 2019-01-15 22:13:46 -08:00
Eric House
c611919876 check for moves when come to foreground 2019-01-15 14:34:50 -08:00
Eric House
e61d7a5629 remove GCM -- crashes when invoked from server!
Once built for SDK 26 the old GCM support code crashes as it's calling
startService() from background. Duh! Will have to bring in Firebase's
replacement at some point. For now if I'm to release it has to be
without GCM.
2019-01-15 14:18:20 -08:00
Eric House
43b979ff46 cleanup: logging and method rename 2019-01-15 12:29:45 -08:00
Eric House
cf3d3bc156 cleanup from review of diffs (nothing significant) 2019-01-15 07:44:38 -08:00
Eric House
73a469a428 make logging respect force-on preference 2019-01-14 16:58:00 -08:00
Eric House
788113ee28 up versions strings for new release 2019-01-14 13:12:39 -08:00
Eric House
c976b3f595 show BT-troubleshooting hint when scan finds no devices 2019-01-14 12:20:27 -08:00
Eric House
23e58524a1 in invite dialog, confirm before deleting BT devices 2019-01-14 12:08:07 -08:00
Eric House
0da5d9dd28 improve gcm-debug toast message 2019-01-13 21:56:59 -08:00
Louies
1328f1a9a4
Added translation using Weblate (Chinese (Traditional)) 2019-01-13 14:15:27 +01:00
Eric House
e378647e36 put back explanatory progress text 2019-01-12 09:04:40 -08:00
Eric House
bfbf17252e use ProgressBar instead of Dialog for BT invite scans
I wanted to show progress, and it was just as easy to replace the
deprecated ProgressDialog as to add a timer to the thing.
2019-01-11 21:06:15 -08:00
Eric House
bdbd5bc1ee disable logging for tagged release builds 2019-01-09 20:00:20 -08:00
Eric House
1625ec9062 Merge branch 'android_branch' into android_translate 2019-01-09 19:03:21 -08:00
Eric House
48a9e830b8 remove empty string -- not legal 2019-01-09 19:02:29 -08:00
Eric House
d2cbcf1e71 tweak BT background notification icon and expl. text
The BT icon part was too thick. And the explanation was TMI.
2019-01-09 18:57:50 -08:00
Eric House
d257369639 use same invite prefix for all variants
I want to be able to invite one app to the other's games to better test
relay. Since I'm the only one using the Dbg variant should be no impact.
2019-01-09 18:25:52 -08:00
Eric House
011825e4a9 cleanup 2019-01-09 18:18:27 -08:00
Eric House
302a3a5025 accept invite even if same-gameID game open
more dev-only code, likely: if the game that's sending the invitation is
open when the invitation arrives, should still check if it's a dupe or
should be accepted.
2019-01-09 09:51:15 -08:00
Eric House
250583caea log when invite response comes back 2019-01-08 20:34:22 -08:00
Eric House
a665df7840 cleanup: test's done already 2019-01-08 20:31:27 -08:00
Eric House
f18a957ed5 kill progress when owner view goes away
BT Invite progress was sticking around when Board left because it wasn't
foreground.
2019-01-08 20:31:27 -08:00
Eric House
2c73f4ca77 don't handle duplicate invitations in DEBUG case
Was creating a second game in some cases in response to duplicated
invitations. Add a test for forceChannel: if there's already a game with
the same gameID *and* forceChannel assume the invitation is a dupe and
drop it.
2019-01-08 20:02:01 -08:00
Eric House
e0f4a028d1 remove a bunch of unused methods 2019-01-08 19:42:44 -08:00
Eric House
24fad52cd8 use second resolution in bt device display
Useful to see that a scan really did just happen
2019-01-08 11:52:31 -08:00
Eric House
7c7b80deae add net-stats dialog to log-tap games menu
So I don't have to open a game to see e.g. how it's connecting, refactor
the network status stuff so it can be called from both board and
gameslist views. Then add new context menuitem that calls it.
2019-01-08 11:37:57 -08:00
Eric House
e9e03a06a3 show toast when GameLock fails to lock (some cases) 2019-01-08 10:09:43 -08:00
Eric House
4fcc5fd99b turn off faker device (but make easy to enable) 2019-01-08 09:49:10 -08:00
Eric House
c87161307c When rematching an Archived game save in default new-game group 2019-01-08 09:41:23 -08:00
Eric House
db641c4664 log gameSeed; generate on linux too
I'm seeing a rare case where a game connectes to relay specifying a room
and somehow gets both slots, having provided different gameSeeds the two
times. This means an opponent won't connect, the room being full in that
game. I can't reproduce, so am logging seed changes better and switching
linux client to leave seed generation to comms as Android does.
2019-01-08 08:16:50 -08:00
Eric House
454e3da578 fix to compile when #define not defined 2019-01-08 07:41:22 -08:00
Eric House
7cccd1a1e6 make the fake result random 2019-01-06 17:12:11 -08:00
Eric House
59f1e1696e remove unused constant (enum) 2019-01-06 17:04:36 -08:00
Eric House
0953772673 cleanup: don't need wrapper around a List<> 2019-01-06 16:58:30 -08:00
Eric House
2a845da9b6 use List instead of array 2019-01-06 16:29:52 -08:00
Eric House
83340567b2 add and implement remove button for btinvite dialog 2019-01-06 15:20:36 -08:00
Eric House
853578eb7d don't drop known BT devices on every scan
Instead, keep them forever (for now), sorted by how long since they were
last seen. A Delete button's probably needed to prevent ex-partners from
sticking around too long. :-)
2019-01-06 14:34:43 -08:00
Eric House
c7f9fc465f persist and display most recent scan time 2019-01-06 13:40:49 -08:00
Eric House
2f508c0b5c persist BT invitee dev scan results
Only launch the scan automatically when the persisted list is empty.
2019-01-06 12:30:31 -08:00
Eric House
3a0e67c7b3 remove unreachable code 2019-01-06 12:05:30 -08:00
Eric House
d868fef0d2 revert space-only change 2019-01-06 12:04:51 -08:00
Eric House
aecce2826e revert change making userError() take an enum
The set's open-ended on the C side, meaning that an int can't be
converted to an enum reliably. Yay for asserts that caught this.
2019-01-06 11:12:59 -08:00
Eric House
5da32d93f7 fix double-launch of SMSInvite activity
Adding a second permission a while back resulted in two Actions being
received and acted on. Needed instead to group the two and receive a
single Action IFF both were granted.
2019-01-06 10:58:12 -08:00
Eric House
5a64b3b92f Fix problems inviting SMS on emulator
Likely no-ops on real devices
2019-01-06 08:59:38 -08:00
Eric House
105e8e2623 add logging
Keep some stuff added to debug problem with dict checksums on server.
2019-01-05 18:54:48 -08:00
Eric House
cace99818d remove dead code 2019-01-05 18:48:26 -08:00
Eric House
3cf8d7571b fix md5sum calc for non-utf8 wordlists
And use apache logging
2019-01-05 18:46:58 -08:00
Eric House
e77b830157 replace assert with what it was to remind me to add 2019-01-01 19:43:44 -08:00
Eric House
e30497f336 catch another exception 2018-12-29 19:56:56 -08:00
Eric House
5a7d5b80da punctuation 2018-12-29 19:52:11 -08:00
Eric House
4a90792dec If game's in Spanish, don't require 7 tiles for trade.
Put up an error message if too many tiles selected for trade
(a condition that couldn't exist when the pool was guaranteed to
have at least 7 in it.) (It's a hack: there's not even an enum
giving Spanish's code, and the lang_locale stuff in info.txt isn't
making it into the .xwd format.)
2018-12-29 18:47:48 -08:00
Eric House
e9ae36f68d fix invite via relayID (linux test app)
I broke it adding SMS invite support?
2018-12-29 07:41:03 -08:00
Eric House
e58f51a523 log, rather than toast, too-frequent debug message 2018-12-28 07:15:40 -08:00
Eric House
bdd92baf55 fix NPE when game isn't connected yet 2018-12-28 07:09:15 -08:00
Eric House
37a853c8a4 oops: use the first *remote* address 2018-12-27 22:10:24 -08:00
Eric House
320db700a9 add opponent address to net stat display
(Debug builds only)
2018-12-27 19:30:34 -08:00
Eric House
24386bd8c9 catch uncaught exception 2018-12-27 18:09:18 -08:00
Eric House
b0805b0b6a use tryLock() to avoid on-ui-thread assertions 2018-12-26 21:41:47 -08:00
Eric House
62cd90c183 remove unused interface 2018-12-26 17:45:42 -08:00
Eric House
0e2af6a836 rewrite GameLock to use wait()/notifyAll()
I've learned a bit about java since writing that class. Should be faster
now without the sleep/polling. Also making it illegal to use blocking
lock() call on UI thread. There may be some assertions to fix in the
next few days.
2018-12-26 17:41:21 -08:00
Eric House
891c73a1b7 make run() wait for gamePtr before starting loop
Was seeing race condition on slowest device where JNIThread init hadn't
finished before the event loop tried to use the gamePtr. So use
wait()/notifyAll() to fix.
2018-12-18 07:07:35 -08:00
Eric House
285f6ad34a revert diagnostic changes 2018-12-17 12:57:17 -08:00
Eric House
e10b17cec0 remove logging; diagnose git/travis problem 2018-12-17 12:35:40 -08:00
Eric House
5467941d45 start stuff when package replaced
And: Don't start the foreground service with its user-visible
notification, as that's too obtrusive and the ACL_CONNECTED stuff seems
to work well enough. Launching timers on a new install is mostly for my
own dev use, but won't hurt user experience either.
2018-12-17 08:26:39 -08:00
Eric House
d8d0065e90 remove some logging 2018-12-17 08:26:00 -08:00
Eric House
3b48ee0ed8 try a different command 2018-12-16 18:48:06 -08:00
Eric House
a2fe00368e more diagnosis 2018-12-16 18:11:09 -08:00
Eric House
b88bbcf443 diagnosing travis build problems 2018-12-16 17:53:18 -08:00
Eric House
d31c2f5513 trying another fix for travis 2018-12-16 17:43:12 -08:00
Eric House
3b0a523499 send successful pings back as they occur
rather than have the user see no feedback until the slowest-to-respond
paired device times out.
2018-12-16 13:34:28 -08:00
Eric House
2d91c133a8 new file (forgotten earlier) 2018-12-16 10:41:04 -08:00
Eric House
67fa27069a add a hint for when scan shows nothing 2018-12-15 07:20:29 -08:00
Eric House
e3f862a6eb shorten timeout for scan/ping 2018-12-15 07:07:54 -08:00
Eric House
e15fb84005 ask for SMS_RECEIVE on startup if have SMS_SEND
It's free (same group) but required on SDK_26 for invitations to work.
2018-12-14 19:33:03 -08:00
Eric House
f7ef1adcb5 add settings button to foreground service notification
On O and beyond it's possible to tweak notification channels separately,
meaning users can hide the new BT-is-running notification and still get
game event notifications. So add a button that takes you to the right
Settings app page.
2018-12-14 17:12:15 -08:00
Eric House
02897f6e36 use separate channel for background service notification
Since on newer OS versions users might want to hide it
2018-12-14 16:00:36 -08:00
Eric House
2ab04901a7 scan all paired devices at same time
One thread per device: brute force, but the threads live a few seconds
and the user just triggered the action so should be ok with it.
2018-12-12 22:32:14 -08:00
Eric House
61dc8e837e cleanup 2018-12-12 22:21:02 -08:00
Eric House
c2f5949623 use AutoCloseable rather than a hack of my own 2018-12-11 15:14:51 -08:00
Eric House
f7258f29e8 saw a crash, so gather more info if it happens again. 2018-12-11 14:40:57 -08:00
Eric House
68bb8a1268 fix bluetooth bootstrapping
Separate processing of sockets from accepting them so that when an ACL
CONN notification is received and we open a socket (but don't yet have a
Service running because the ACL thing is most likely for some other app)
we can set it aside to be processed once we do have a service. Use the
same block-until-non-null thing as in RelayService to keep that thread
free of NPEs.
2018-12-11 14:38:40 -08:00
Eric House
48c06acef5 new debug util method 2018-12-11 08:28:07 -08:00
Eric House
4f8f14c83b kill thread when wait() fires InterruptedException
Rather than just dropping it and going back to a wait that will likely
last forever. I *think* wait() throwing that exception means the
thread's being killed, in which case the exception should be thrown up
to the containing loop that will then exit.
2018-12-11 06:57:59 -08:00
Eric House
f2322d7e81 cleanup (no behavior change) 2018-12-11 06:57:18 -08:00
Eric House
bfad324bb4 add stop button to notification
And keep the service alive (and the notification present) for 15
minutes.
2018-12-10 19:17:05 -08:00
Eric House
ea03c855e4 cleanup: remove logs and unneeded code
pull too much logging and stuff starting service on going into
background. RelayService isn't that type of Service.
2018-12-10 11:56:40 -08:00
Eric House
e797a28a6d cleanup: use marker instance rather than instanceof 2018-12-10 10:14:17 -08:00
Eric House
0a4b8549cf Don't block UI thread until service instances released
I thought I had to stop using a service instance before returning from
its onDestroy(), but that made the UI incredibly laggy AND appears not
to be necessary. At least in a bit of testing things still work.
2018-12-10 09:45:24 -08:00
Eric House
fe6996b663 decouple networking threads from RelayService
Oreo's creating a new service instance for every single intent passed to
enqueueWork, meaning a brand new set of threads with a new queue, empty
set of messages to be retried, etc. was created every time, and all
attempts to optimize and retry were broken. So: make the threads a
static singleton that are given a Service instance from onCreate() and
told to drop it from onDestroy(). The threads proceed until they need an
instance, then block until one's available. Seems to work on Oreo and an
older Android as well.
2018-12-09 18:26:59 -08:00
Eric House
a2fa841947 new DebugUtils method 2018-12-09 18:26:59 -08:00
Eric House
c5c081e8bd make RelayService descend from JobIntentService
Required moving most of XWService into a class to which all services
could delegate what they used to inherit.

squash me
2018-12-09 18:26:59 -08:00
Eric House
5f7e4aa1b9 refactor a tiny bit 2018-12-09 18:26:59 -08:00
Eric House
9c501b19a8 get RECEIVE_SMS permission with SEND_SMS
Apparently one of the newer Android SDK levels adds the requirement to
have RECEIVE_SMS permission in order for a broadcast receiver to get
called. Meaning receipt didn't work even if SEND_SMS had been
granted. Since they're both in the same group (for now) the OS will
grant the second silently if the first has been granted, but it still
has to be requested. So request both at the same time. This still leaves
the problem that a user who's never tried to create an SMS game won't
have been asked for either permission and so won't receive SMS
invitations, but fixing that is for a later release.
2018-12-09 18:26:59 -08:00
Eric House
3c861166de use TAG format that doesn't break logcat filtering 2018-12-09 18:26:59 -08:00
Eric House
e30466e096 include flavor in logged TAG
Tired of not being to tell variants' logs apart.
2018-12-09 18:26:59 -08:00
Eric House
7c804b9aad don't drop potential duplicate invitations after 5 seconds
Other code will take care of duplicates. This was meant to avoid a race
condition, for which 5 seconds is enough. Blocking forever complicates
testing.
2018-12-09 18:26:59 -08:00
Eric House
c4ac96ede8 fix NPE (race condition around deletion?)
Check for null. Not sure how I got it there, but there's little harm in
failing silently.
2018-12-09 18:26:59 -08:00
Eric House
95c11eec07 don't try to connect to non-phones
When a device is paired but not a phone (or computer, which is how
tablets identify), don't bother trying to scan it.
2018-12-09 18:26:59 -08:00
Eric House
051aeba57c fix crash by not creating Handler until on UI thread
Receiver is created and installed by a non-UI thread sometimes so can't
create the Handler there. onReceive() is called on an ok thread however
so create it there on demand. Fixes crash that showed when receiving
relay messages in background.
2018-12-09 18:26:59 -08:00
Eric House
68ae9790b4 launch service from ACTION_ACL_CONNECTED
Fire up the receiver thread, and start the service, on receipt of this
ACTION (if they're not already running.) On start, the service takes
over the thread and begins dispatching messages. Works to launch the app
when it's not running and in most cases, though messages received before
the service launches are currently dropped, things seem to work.
2018-12-09 18:26:59 -08:00
Eric House
3dbec328af fix NPE
It happened when too many timers were firing, but I think this code's
better anyway.
2018-12-09 18:26:59 -08:00
Eric House
271d43808f kill foreground service on a timer
reset timer on receiving meaningful data and on moving app to
background. If it fires and we're in background, kill the service.
(There's currently no way to restart it except bringing the app into the
foreground. Fixing that's coming.)
2018-12-09 18:26:59 -08:00
Eric House
c8fe57cc78 make listener thread static
remove relationship with BTService so it can be created independently.
2018-12-09 18:26:59 -08:00
Eric House
e984b10fea remove option of disabling foreground service
Since it's not going to be running all the time any more.
2018-12-09 18:26:59 -08:00
Eric House
d94821feb4 btinvite dlg shows results of scan not all paired devs
Moving toward a better BT invite experience: use BTService to scan for
ourselves on all paired devices, and only allow selecting from among
those on which we're running (and so likely to respond to an
invitation.)
2018-12-09 18:26:59 -08:00
Eric House
ece125c5dc change foreground-service notification text 2018-12-09 18:26:59 -08:00
Eric House
1e42156f4a remove assert
Constructor is called from JNI code and so not on the UI thread.
2018-12-09 18:26:59 -08:00
Eric House
faeaa60f87 replace junit's assert with my own
And have it log before throwing. Should be easier to track down asserts
coming from jni callbacks this way than in the C code.
2018-12-09 18:26:59 -08:00
Eric House
eaae9ed1c1 Always call startForeground after startForegroundService
It's an error to e.g. stopSelf() without having called startForeground,
so do it even when about to exit.
2018-12-09 18:26:59 -08:00
Eric House
0a0bd54ec7 include new permission to install third-party apks
Fixed upgrade of Dbg variant not working on Oreo.
2018-12-09 18:26:59 -08:00
Eric House
8bd4613c2a include X86 native library again
It's a pain to have to change code to run in Genymotion, and to have
upgrade not testable using Genymotion. Consider verting this change
before next release.
2018-12-09 18:26:59 -08:00
Eric House
50f448bb1f fix to contact relay in foreground on Oreo+
Background still needs a lot of work.
2018-12-09 18:26:59 -08:00
Eric House
ff2192f659 fix path name string causing JNI crash on emulator
And catch NPE that also seems to be emulator-only
2018-12-09 18:26:59 -08:00
ssantos
73ac713b89
Translated using Weblate (Portuguese)
Currently translated at 52.7% (395 of 750 strings)
2018-12-01 21:08:47 +01:00
Eric House
9eec5c37ef fix path name string causing JNI crash on emulator 2018-11-29 09:30:14 -08:00
Eric House
91828cb851 add more google()
still trying to fix travis builds
2018-11-28 21:21:48 -08:00
Eric House
b2bf3a6e80 move google() above maven (to fix travis?) 2018-11-28 20:38:43 -08:00
Eric House
ce3cb62f02 add reversed version of btservice notification icon
For the Dbg variant to match its normal notification icon.
2018-11-28 19:35:24 -08:00
Eric House
fc699caaa8 ensure channel id always setup before use 2018-11-28 19:27:32 -08:00
Eric House
7eb278033a revert change setting notifiction priority low 2018-11-28 19:20:43 -08:00
ssantos
f8c79efc60
Translated using Weblate (German)
Currently translated at 99.7% (748 of 750 strings)
2018-11-27 23:07:31 +01:00
Eric House
843c95e7ae new icon for omnipresent BTService notification 2018-11-27 11:27:18 -08:00
Eric House
988ac55eaa tweak apk-cmp script 2018-11-27 10:06:38 -08:00
Eric House
0dbc976561 Merge branch 'android_branch' into making-it-work-with-api26 2018-11-24 13:19:34 -08:00
Eric House
88fe2739c1 fix crashes (NPE and RelayService trying to run in background)
Still need to figure out what RelayService does. It needn't run for long
except where GCM isn't present.
2018-11-24 13:04:14 -08:00
Eric House
eb6831ea12 add bt-in-background preference
And clear it from a button in the alert that's posted when the
foreground service notification is selected.
2018-11-23 09:47:18 -08:00
Eric House
f8e15bd3a0 add explanation for foreground service notification 2018-11-23 08:21:52 -08:00
Eric House
2ba5982ddf use foregroundService on devices that can handle it
And show the notification regardless. Tested only on pre-Oreo device so far.
2018-11-22 15:18:57 -08:00
Eric House
6177914213 add lifecycle lib (events only logged only so far) 2018-11-22 08:13:49 -08:00
ssantos
9a80bacf66
Translated using Weblate (Portuguese)
Currently translated at 52.1% (391 of 750 strings)
2018-11-19 08:07:10 +01:00
Israa Zamzami
3eba8312d4
Translated using Weblate (Arabic)
Currently translated at 12.0% (90 of 750 strings)
2018-11-14 20:07:08 +01:00
Israa Zamzami
1b6139721d
Added translation using Weblate (Arabic) 2018-11-13 19:05:27 +01:00
WaldiS
b49e1289db
Translated using Weblate (Polish)
Currently translated at 1.2% (9 of 750 strings)
2018-10-27 20:38:05 +02:00
WaldiS
cb97fc5796
Translated using Weblate (Polish)
Currently translated at 0.9% (7 of 750 strings)
2018-10-21 21:35:02 +02:00
Allan Nordhøy
68a705a0a3
Translated using Weblate (Norwegian Bokmål)
Currently translated at 86.0% (645 of 750 strings)
2018-10-03 11:32:31 +02:00
Allan Nordhøy
1a89b2eee1
Translated using Weblate (German)
Currently translated at 99.0% (743 of 750 strings)
2018-10-03 10:28:13 +02:00
Allan Nordhøy
9ed3239fe2
Translated using Weblate (Norwegian Bokmål)
Currently translated at 81.6% (612 of 750 strings)
2018-10-02 09:31:31 +02:00
Allan Nordhøy
d6468499a3
Translated using Weblate (Norwegian Bokmål)
Currently translated at 77.3% (580 of 750 strings)
2018-09-30 10:31:48 +02:00
Allan Nordhøy
5bf337dcde
Translated using Weblate (Norwegian Bokmål)
Currently translated at 57.4% (431 of 750 strings)
2018-09-25 06:33:14 +02:00
Eric House
dfcac132c8 up strings for new translations-only release 2018-09-22 14:21:04 -07:00
Eric House
6bafbecd75 toward service working on Oreo
Did a bunch of stuff to inherit from JobIntentService and use enqueue(),
but doesn't work yet. OS is unable to bind, with this error:
09-21 17:20:51.678  3050  3050 W JobServiceContext: Time-out while trying to bind 2edee28 #u0a277/1111 org.eehouse.android.xw4dbg/org.eehouse.android.xw4.BTService, dropping.
2018-09-22 09:22:37 -07:00
Eric House
24440230ba refactor so startService can change (no behavior change yet) 2018-09-21 15:21:04 -07:00
Eric House
dbbeeb7519 Merge branch 'android_translate' into android_branch 2018-09-13 21:31:09 -07:00
Eric House
62dc885922 Merge remote-tracking branch 'weblate/android_translate' into android_translate 2018-09-13 21:29:44 -07:00
Eric House
45600a295a use NotificationChannel to work on O and beyond with SDK 26
Notifications don't work on Oreo without this change, which includes a
new Support Library in order to get NotificationChannel and creates and
uses that as docs describe. Requires that MinSDK be raised from 8 to 14,
which may lock some users out. It *should* be possible not to do this in
the fdroid variant since their app store doesn't requires SDK 26, but
I'll look at that later.
2018-09-13 19:49:49 -07:00
Eric House
6f6c3238d4 Merge branch 'android_branch' into making-it-work-with-api26 2018-09-13 14:11:30 -07:00
Eric House
54f3e57f7f Merge branch 'android_branch' into making-it-work-with-api26 2018-09-13 10:36:26 -07:00
naofum
13f617b0b5
Translated using Weblate (Japanese)
Currently translated at 74.1% (556 of 750 strings)
2018-08-27 02:42:19 +02:00
Bernard Massot
28b784fdb4
Translated using Weblate (French)
Currently translated at 98.4% (738 of 750 strings)
2018-08-26 21:37:54 +02:00
Eric House
dfa308c1f5 pull timestamp out of DB as a long
for better formatting, eventually.
2018-08-07 09:01:17 -07:00
Eric House
02781c5113 use different (older) crashlytics (untested)
For some reason my laptop wouldn't build without this change. No idea
what happened to the newer version I was using or if the change
works (beyond compiling). Should be easy to find the change later if
it's a problem.
2018-08-07 08:57:14 -07:00
Eric House
9fb8671ef0 Merge branch 'android_branch' into android_translate 2018-08-04 11:14:54 -07:00
Markus Enzenberger
5d729094c3
Translated using Weblate (German)
Currently translated at 99.0% (743 of 750 strings)
2018-08-03 09:38:07 +02:00
Eric House
d23307f0ef up strings for new release 2018-08-02 06:28:09 -07:00
Eric House
3d7d1b8ffd don't call tile picker more than once
Some devices, including my Moto, are apparently calling server_do() more
than most. When the game's supposed to be asking the user to pick tiles
that resulted in stacked TilePickAlerts. The stack of these
sending (taken together) too many picked tiles to the game made it
crash. So modify server to have only one pending tile-pick request going
at a time. Because the server can't know when the user dismisses the
alert in Android and so won't post again, respond to the dismissal by
closing the game. Reopening will put it in a state where the tile picker
can get called again.
2018-08-01 20:30:51 -07:00
Eric House
0cc7d21ecb fix race-condition NPE by inspection 2018-08-01 08:08:36 -07:00
Eric House
6a58a08bca remove redundant specifier 2018-08-01 07:50:34 -07:00
Eric House
8286c9c116 new script for when release builds required 2018-08-01 07:48:02 -07:00
Eric House
f1c2eb79d4 remove x86 from jni; that chip's dead on Android 2018-08-01 07:37:33 -07:00
Eric House
e0c6621bfe remove assert: messages not for me are common 2018-07-31 00:26:11 -07:00
Hosted Weblate
a44db6c942
Merge branch 'origin/android_translate' into Weblate 2018-07-31 08:56:08 +02:00
Eric House
803b4ff0f3 cleanup: load/initialize only when first needed 2018-07-30 08:00:00 -07:00
Eric House
bf06d4b4c2 fix not sending ACK_INVITE
Logic error meant it was never sent. Now always send on receipt of a
well-formed invitation, even if e.g. the recipient's missing a wordlist
and the game can't be started immediately.
2018-07-30 07:37:20 -07:00
Eric House
a23777bade move byte[]<->NetLaunchInfo convert into the class 2018-07-27 07:44:02 -07:00
Eric House
2f10712379 revert to old invite data format
Had inadventently changed how NetLaunchInfo was transmitted, and crashed
on receiving from older builds. Fix to not crash, and then fix to send
and recieve in the old format.
2018-07-27 07:24:27 -07:00
Joan Montané
2c9d619f71
Translated using Weblate (Catalan)
Currently translated at 96.6% (723 of 748 strings)
2018-07-27 10:35:25 +02:00
Eric House
e637f49b95 include port and proto
Pretty sure couldn't have played against an older build without this.
2018-07-26 21:13:09 -07:00
Eric House
dfd4a3f6f6 put the api-26 changes back
lost in a rebase apparently
2018-07-26 19:16:50 -07:00
Eric House
9ddc6e4b89 Move transision of cmd and gameid and port (pending) into smsproto
common code, simplifying and unifying what the platform-specific code
has to do. Seems to work.
2018-07-26 07:50:16 -07:00
Eric House
a65498c132 add missing Overrides -- in one file 2018-07-26 07:24:23 -07:00
Eric House
70b22f7d11 revert to sdk-23
Too much breaks with the upgrade and I don't have time to deal.
2018-07-21 21:36:51 -07:00
Eric House
affb13207e up sdk version in the second place 2018-07-20 08:24:48 -07:00
Eric House
e1ba676a8e Merge branch 'quick-bt-fix' into android_branch 2018-07-19 07:17:15 -07:00
Eric House
723e7d7953 update changes to include translations included 2018-07-19 06:57:21 -07:00
Allan Nordhøy
6abff25946 Translated using Weblate (Norwegian Bokmål)
Currently translated at 55.2% (413 of 748 strings)
2018-07-19 06:54:32 -07:00
Joan Montané
5ced000c8c Translated using Weblate (Catalan)
Currently translated at 94.3% (706 of 748 strings)
2018-07-19 06:54:14 -07:00
Eric House
a9701525b7 up version string for new release 2018-07-19 06:47:18 -07:00
Eric House
fcefa9ca97 dismiss the BT invite progress thing on success
Not sure how this broke in the reorg of XWService stuff, but let's be
agressive about dismissing that thing.
2018-07-19 06:33:05 -07:00
Eric House
4450a8d56c fix NPE by inspection
I'm not sure how it happened -- race condition -- but it's harmless to
drop the action when it does.
2018-07-19 06:33:00 -07:00
Eric House
7cb00b6266 fix assertion: return a f*ing sink
Messed this up in February apparently.
2018-07-19 06:32:48 -07:00
Eric House
b0cf3a795c fix NPE by inspection
fix crash reported by user. Looks like a race on the way out so check
for null first.
2018-07-19 06:32:36 -07:00
Eric House
d40b8b7cad dismiss the BT invite progress thing on success
Not sure how this broke in the reorg of XWService stuff, but let's be
agressive about dismissing that thing.
2018-07-19 06:29:59 -07:00
Eric House
e1fec99860 fix NPE by inspection
I'm not sure how it happened -- race condition -- but it's harmless to
drop the action when it does.
2018-07-19 06:29:03 -07:00
Eric House
67d09a79b5 fix assertion: return a f*ing sink
Messed this up in February apparently.
2018-07-19 06:07:26 -07:00
Eric House
a3fb82ebc4 Merge branch 'android_branch' into android_translate 2018-07-18 22:30:58 -07:00
Eric House
a3ac3c4c8a fix NPE by inspection
fix crash reported by user. Looks like a race on the way out so check
for null first.
2018-07-18 22:26:26 -07:00
Eric House
807fe8633f add forgotten file 2018-07-17 08:46:39 -07:00
Eric House
84f636cbd5 always resend via SMS when opening game
It's done for other comm types too, and is necessary to get linux test
script to pass once I make SMS delivery unreliable. But it may duplicate
the tickle that Android's doing and result in duplicate messages: test.
2018-07-17 07:05:33 -07:00
Eric House
8f9c9e0623 fix crash around uri permissions for new OS version
Use a FileProvider with all the necessary xml changes to pass apk to
installer without crashing it or myself.
2018-07-17 07:02:36 -07:00
Eric House
276ef38108 use sdk26 -- will be required soon anyway 2018-07-15 10:33:09 -07:00
Eric House
2d8ac995b7 add test case where (fake) sms messages never arrive 2018-07-14 15:43:42 -07:00
Joan Montané
cc714a96cb Translated using Weblate (Catalan)
Currently translated at 94.3% (706 of 748 strings)
2018-07-14 12:35:09 +02:00
Eric House
352d87a327 use stream to take apart untrusted message safely
add new stream getters that return false if reach EOS and use them to
exit early and safely if incoming SMS msg is misformatted. I'm getting
random garbage meant for other apps perhaps.
2018-07-13 22:41:52 -07:00
Eric House
019cc628e4 fix crash figuring md5sum of null bytes
Just return null String
2018-07-13 22:35:44 -07:00
Eric House
89ec7987e6 move test to after db's inited to avoid crash 2018-07-13 18:20:56 -07:00
Eric House
5d6c743087 fix (I hope) null jni array dereference 2018-07-13 18:20:05 -07:00
WaldiS
cf24b1e4a0 Translated using Weblate (Polish)
Currently translated at 0.2% (2 of 748 strings)
2018-07-13 21:41:10 +02:00
Eric House
669acdcd19 log checksum of messages into smsproto 2018-07-13 07:39:11 -07:00
Eric House
c45c9cd809 read format spec outside assert
since the read inside goes away in release builds!
2018-07-13 06:59:57 -07:00
Eric House
b8c2cd1dd5 don't assert when a stray message wanders in 2018-07-12 20:20:04 -07:00
WaldiS
2d53673ae5 Added translation using Weblate (Polish) 2018-07-12 20:57:43 +02:00
Eric House
df8558e071 delete partial messages when count mismatches
Had an assert fire when a message ID was reused with a different count.
It was likely because of messages crossing between two variants, but
still, fix: delete what's been saved so far when a new count shows up.
2018-07-12 08:13:32 -07:00
Eric House
bd1cc4276b cleanup and variable rename (no code changes) 2018-07-11 07:33:36 -07:00
Eric House
3477bcf7b6 fix release-build scripts for new gradle output paths 2018-07-11 06:48:42 -07:00
Eric House
af0ddaa0f7 up version code and strings 2018-07-11 06:41:36 -07:00
Eric House
6bab91803d fix release builds
(broken since 091299c 2 months ago)
2018-07-11 06:38:54 -07:00
Allan Nordhøy
3959c73a86 Translated using Weblate (Norwegian Bokmål)
Currently translated at 55.2% (413 of 748 strings)
2018-07-11 00:39:41 +02:00
Eric House
95ac66370c fix off-by-one preventing delayed messages from sending 2018-07-10 07:08:57 -07:00
Eric House
9c2a722cc5 change two method names 2018-07-10 07:07:30 -07:00
Eric House
8c14ccc0d2 add new dutil to store by ptr; use for smsproto msgID 2018-07-10 06:36:34 -07:00
Eric House
08c41ddd3e add debug preference controlling new smsproto format
Don't use the message-combining feature for sends unless this is
set. After a release the default value will switch to true.
2018-07-10 06:19:16 -07:00
Eric House
a9769efe1c implement load/store on android 2018-07-09 07:11:54 -07:00
Eric House
e898dc509c plug leaks 2018-07-07 23:03:26 -07:00
Eric House
13cc6c79f1 add save/restore of partial messages
Handles case where the app receives only a subset of the SMS messages
into which a larger game-level message has been broken. Now when it
restarts and the remaining parts come in the whole can be reassembled.
2018-07-07 22:56:32 -07:00
Eric House
1c58ab3d99 clean up linux db usage
For load/store I'll need more flexibility to store large values.
2018-07-06 08:04:53 -07:00
Eric House
1941642607 add load and store to dutils, and implement with stubs 2018-07-06 06:56:54 -07:00
Eric House
3437ae2ebc use smsproto in Android 2018-07-06 06:48:56 -07:00
Eric House
2e9fbb8204 add common implementation of the SMS proto stuff
And use in linux client. Goal here is to reproduce then improve the
Android SMS pre- and post-processing stuff with a common/ implementation
that can be tested on linux and used wherever.
2018-07-05 21:40:56 -07:00
Eric House
87418d63d1 fix linux "sms" and modify script to test it
My linux sms hack used inotify and didn't check for messages that were
there when the app launched. Replace inotify with a simple glib periodic
timer. A bit of latency mimics SMS better anyway. Update test script to
support SMS, and add params to and otherwise fix linux client so
everything works.
2018-07-05 21:22:20 -07:00
Eric House
ed90c9c16d implement util->dutil split for Android
So now all jni code uses a single dutil context, but also a single
mempool and jniutil instance instead of new instances of the latter two
per game and dict-iteration.
2018-07-05 08:32:19 -07:00
Eric House
d4436b7706 Break part of util into dutil
Trying to separate what's game-specific from what can be app/device
specific (i.e. with a long lifespan, and available when a game isn't
open.)

Android will be broken after this commit and fixed after the next
2018-07-05 07:58:50 -07:00
Eric House
d46a4d13ba use mem_stream_make_raw() where possible in common code 2018-06-27 23:42:50 -07:00
Eric House
d70b089835 use mem_stream_make_raw() where possible in linux code 2018-06-27 23:37:28 -07:00
Eric House
976db7b181 add mem_stream_make_raw 2018-06-27 23:24:45 -07:00
Eric House
9cdd5a7b72 share mpool and vtable in jni calls
A number of jni calls were "stateless", which meant they allocated their
own vtmgr and mpool instances each time invoked. Instead invoke them
with the global jni closure and add to it vtmgr (already has mpool) and
use these instead of allocating/freeing each time. To make sure no race
conditions are introduced (mpool, though debug-only, is probably not
thread-safe), guard these new uses with an in-use flag. If that fires
I'll need a mutex or something.
2018-06-27 21:17:44 -07:00
Eric House
d2ab796fac test script tweaks 2018-06-18 07:11:38 -07:00
Eric House
382718bcb0 init variable
This might have made valgrind happier, though it's been a while. Can't
hurt.
2018-06-13 14:34:31 +03:00
Eric House
80167fb2d9 one more assert 2018-06-01 05:58:04 -07:00
Eric House
b7981cc8da print based on time rather than number of iterations 2018-05-31 23:06:51 -07:00
Eric House
ffaa47f893 fix creation of bogus game
Snapshot can be the first write. Save the rowid if it's new.
2018-05-31 22:19:03 -07:00
Eric House
b24d60e7bf add assert to verify no need for mutex 2018-05-31 21:23:25 -07:00
Eric House
dff130d6c6 ignore log dir 2018-05-31 21:23:10 -07:00
Eric House
d240e30bf4 test script: log and show tiles left in tray
Once the pool count drops to 0, start showing the number of tiles left
in the user's tray. This prevents there being a long time when nothing
seems to be changing *and* the script from exiting early because it
thinks all games are hung.
2018-05-25 21:36:25 -07:00
Eric House
89f4246e83 track and log types of (un-acked) messages 2018-05-24 21:03:25 -07:00
Eric House
39a5ce92ee refactor a bit (no behavior change) 2018-05-23 22:03:16 -07:00
Eric House
1821d197b9 fix to compile on 32-bit system 2018-05-23 19:48:30 -07:00
Eric House
32c93786b3 fix assert when buffer too small
read directly into vector rather than first loading into a fixed-size
buffer that's apparently occasionally not big enough.
2018-05-21 21:19:32 -07:00
Eric House
40ce484a92 fix mistaken and very broken commit
(Fortunately I never ran a relay with this in it!)
2018-05-21 21:19:25 -07:00
Eric House
7fa0cb1b93 rewrite as Thread instead of AsyncTask
I want to be able to use it in contexts where AsyncTask doesn't make
sense, e.g. from timer in background.
2018-05-11 10:23:49 -07:00
Eric House
091299c030 upgrade AS and gradle and with luck travis will work 2018-05-06 14:33:10 -07:00
Eric House
32df1777d3 Merge branch 'android_branch' into android_translate 2018-05-03 06:46:44 -07:00
Eric House
82e6c5495b fix to delete dict even when loc is wrong
Somehow I got a wordlist into a location different from what was
recorded in the DB table and since the delete command matched on
location as well as name it was never deleted (which meant the checksum
was never updated and so upgrading never seemed to succeed.) Removing
the match on location fixed that problem, and since I don't see any harm
in cacheing only one version of a wordlist will simply leave it that
way.

Did a bunch of cleanup as well.
2018-05-01 07:22:59 -07:00
Eric House
a27e8c4c04 move static method into enum 2018-05-01 07:00:14 -07:00
Eric House
1e766ee52d show usage when no args provided 2018-04-29 20:12:22 -07:00
Eric House
535dc29646 silence warning 2018-04-18 21:54:51 -07:00
Eric House
681e2cd8a0 up version code and strings 2018-04-18 21:49:04 -07:00
Eric House
cee7d696fc fix stuff to make valgrind happy 2018-04-17 21:13:53 -07:00
Eric House
1b71198d4e add valgrind option to test script 2018-04-14 10:48:20 -07:00
Eric House
ca54371515 tweaks to test script
Make fewer games with > 2 players, as that's rare. Fix calculation of
total number of launches to include games that have ended.
2018-04-14 10:42:53 -07:00
Eric House
ff82aa4251 fix asserts that fire when test script includes undos
When I used the --undo-pct flag in discon_ok2.py asserts occasionally
fired. This fixes that, and seems not to break anything.
2018-04-14 10:42:53 -07:00
Eric House
317df71588 more valgrind fixes 2018-04-14 10:17:12 -07:00
Eric House
05892c630e lazy: use glib to avoid gcc warnings 2018-04-14 09:39:27 -07:00
Eric House
3bb6f842b2 fix valgrind-flagged errors 2018-04-14 09:13:43 -07:00
Eric House
fecbfdddb6 tweaks to logging for stack hash debugging 2018-04-08 20:46:35 -07:00
Joan Montané
08e74b5dc7 Translated using Weblate (Catalan)
Currently translated at 93.3% (698 of 748 strings)
2018-04-07 09:34:52 +02:00
Eric House
afbf5a2218 fix python script to catch relay.py errors 2018-04-06 21:50:13 -07:00
Eric House
89809e051d compile with latest gcc (untested on old) 2018-04-06 21:49:51 -07:00
Eric House
a221ae43f4 flip arrow when board flipped
Fixing https://sourceforge.net/p/xwords/bugs/8/, flip the arrow before
placing it on top of the tile just returned to the tray.
2018-03-22 07:20:17 -07:00
Eric House
8f86cf9a77 don't assert on debug builds either
I'm seeing several IllegalStateException crashes due to e.g. having an
alert posted when app's in the background. Need to fix them, but the
debug build crashing isn't helpful. Log.e() instead.
2018-03-22 06:55:49 -07:00
Eric House
ab0764fa5a hack around IllegalStateException with Wait alert
The pesky thing is back. When app's in the background with an
unconnected game open displaying the "resend/wait" alert and the game
connects get IllegalStateException because the fragment stack's being
modified after onSaveInstanceState() (or, because the dialog fragment,
saved as an instance variable in BoardDelegate, dates from an earlier
state. Anyway, catching and dropping the exception and elsewhere failing
silently to rebuild the alert seems to fix the problem, but the right
fix is likely different. I suspect hanging onto that iVar is wrong, and
that the dialog should go away when onStop() is called and then be
rebuilt later from saved state. But for now, not crashing is good.
2018-03-21 08:11:07 -07:00
Eric House
fef4db0ee4 make easier to comment out 2018-03-21 07:28:49 -07:00
Eric House
a8db820b68 change strings for new release 2018-03-14 20:07:05 -07:00
Eric House
36c9e8c93b Merge branch 'android_branch' into android_translate 2018-03-14 19:32:25 -07:00
Eric House
77e40619ce Merge branch 'android_translate' of git://git.weblate.org/xwords into android_translate 2018-03-14 19:29:13 -07:00
Markus Enzenberger
dc0436e80d Translated using Weblate (German)
Currently translated at 99.0% (743 of 750 strings)
2018-03-11 09:37:11 +01:00
Eric House
74406c9bba on failure, don't log what looks like success 2018-03-09 06:45:21 -08:00
Eric House
e207b1e9fa log intent contents
trying to track down why/when they wind up empty
2018-03-08 08:30:01 -08:00
Eric House
2a2558a011 add/fix utility for printing Intent contents 2018-03-08 08:17:56 -08:00
Markus Enzenberger
a47381ed53 Translated using Weblate (German)
Currently translated at 98.4% (738 of 750 strings)
2018-03-04 08:39:34 +01:00
Eric House
de01c1aadb cleanup/modernize (should be no behavior change) 2018-03-01 08:13:38 -08:00
Eric House
2c153d1b9e log pending score drawing
I'll occasionally see the pending score in tray drawn dim after hint
fails to find a move, but can't reproduce. So add logging.
2018-03-01 06:58:37 -08:00
Eric House
c7bcccf979 cleanup. Should be no behavior change. 2018-02-28 19:23:36 -08:00
Markus Enzenberger
a24977dddc Translated using Weblate (German)
Currently translated at 86.2% (647 of 750 strings)
2018-02-28 19:13:52 +01:00
Eric House
75c48ddcc5 remove excessive comments 2018-02-28 06:49:35 -08:00
Eric House
760aa3d304 juggle tiles in generated moves (debug only)
Got a report of crashes due to corrupt move records. Given I rarely see
them I wondered if it's because the hint- and robot-generated moves I
work with have tiles in order. So now on debug builds tiles in moves
from those sources are randomly rearranged (as if the user had formed
the word in random order.) The bug isn't showing up, but I figure the
test's worth keeping.
2018-02-28 06:44:44 -08:00
Joan Montané
98dd664a35 Translated using Weblate (Catalan)
Currently translated at 93.0% (698 of 750 strings)
2018-02-28 11:35:02 +01:00
Eric House
b3559915e9 replace AsyncTask with Thread
It didn't even use the runOnUiThread feature!
2018-02-26 07:57:28 -08:00
Eric House
61993fc079 add tests to the rest of the forever loops 2018-02-26 07:03:47 -08:00
Eric House
aaafe1af00 assert we aren't looping infinitely
Stuff I'm doing with invitation resends is making the relay loop
inifintely. Let's assert a small loop count instead: better to crash and
restart than loop forever unable to process requests.
2018-02-25 20:44:06 -08:00
Eric House
73c7494e30 move invitation handling into superclass
Remove a bunch of duplicated code, replacing with implementation in
XWService. Fixes duplicate invitation and game opening policies being
slightly different.
2018-02-24 07:56:57 -08:00
Eric House
aacb0486f5 fix release-only bug showing duplicate moves
The fix I made earlier for this relied on a callback that was skipped in
release builds. Now always take the path that involves making the
callback when one is provided. Also remove an optimization that was
trying to eliminate possible moves based on scores prior to doing the
more expensive full check. In 2018 I prefer simplicity, and can make the
remaining code faster if that's required.
2018-02-18 12:29:30 -08:00
Eric House
4504302b3b make "release" builds compile again
Release isn't really a thing on linux, but I'm fixing something that
only reproduces when DEBUG is undefined.
2018-02-18 11:30:54 -08:00
Eric House
0bccf565c6 cleanup: ivar becomes local variable 2018-02-07 07:35:25 -08:00
Eric House
c762b43047 up version strings and changelog 2018-02-06 07:25:07 -08:00
Eric House
102671398b truncate player name, not score
Try some funky layout shite to get, within a horizontal linear layout,
the first text field trucated if necessary so that the second (holding
the score) can be fully displayed. Tested on exactly one emulator so
far.
2018-02-03 20:11:03 -08:00
Eric House
9c9a19d445 truncate player name, not score
Try some funky layout shite to get, within a horizontal linear layout,
the first text field trucated if necessary so that the second (holding
the score) can be fully displayed. Tested on exactly one emulator so
far.
2018-02-03 20:08:55 -08:00
Joan Montané
a152b169e8 Translated using Weblate (Catalan)
Currently translated at 75.4% (566 of 750 strings)
2018-02-03 10:34:50 +01:00
Eric House
cf1f4a9114 replace one with other in Catalan <plurals> elem
I think there's a bug in Weblate because I've seen this before: where
the English provides only an <other> the translation comes back with
only a <one>. That's wrong. Try adding a <one> in the English case to
see if that makes a difference.
2018-02-02 21:32:30 -08:00
Eric House
9855ef55ae replace one with other in Catalan <plurals> elem
I think there's a bug in Weblate because I've seen this before: where
the English provides only an <other> the translation comes back with
only a <one>. That's wrong. Try adding a <one> in the English case to
see if that makes a difference.
2018-02-02 21:30:15 -08:00
Eric House
1b36e734a4 Merge branch 'android_branch' into android_translate 2018-02-02 21:20:43 -08:00
Eric House
59b82d242c return from only one place. 2018-02-02 21:17:23 -08:00
Joan Montané
71b959aef3 Translated using Weblate (Catalan)
Currently translated at 75.4% (566 of 750 strings)
2018-02-01 09:34:48 +01:00
Eric House
757c5b4ece cleanup: move db access into doInBackground() 2018-01-29 19:29:18 -08:00
Eric House
5326d42438 enable smart scrolling
Otherwise it takes too long to scroll if you have hundreds of
games. To make this work had to move scroller to left side of games
list display as otherwise the scroller steals events from the expander
thingies.
2018-01-29 05:33:48 -08:00
Eric House
875d956836 don't need the local threadinfo at all
I think the crash was just due to removing env from the global state
rather than just leaving it be.
2018-01-23 21:26:11 -08:00
Eric House
ffaa232dba fix dictname being an empty string early on
Likely because of something in the jni world unset per-player dict name
is empty string rather than null, so test for that too. Fixes dicts
popup in newly-created game have an empty first line " (in use)".
2018-01-23 21:14:27 -08:00
Eric House
fd0c5767e6 toast status for resend should include the "re" 2018-01-23 06:56:18 -08:00
Eric House
d809ff4f7c give dict iter its own threadmap
I like this better than the previous fix: rather than share a
thread->env map with the game world allocate a new one for each
iterator. This could cause problem if the iterator is used on threads
that don't currently call map_thread(), or if there are callbacks that
need to look up the env that I'm not aware of. Needs testing...
2018-01-22 22:02:57 -08:00
Eric House
7242a709cb fix crash (race condition?) downloading dict info
Stumbled on a NPE opening up the wordlist browser configuring the first
game on a new install. So now test for null there and init early if
necessary. Seems to work, and won't do anything in places were not
needed.
2018-01-22 21:46:04 -08:00
Eric House
ff92c4a627 update changelog 2018-01-22 21:37:43 -08:00
Eric House
9654241fcf remove ability to set a min > max or max < min
Remake the min and max spinners every time either value changes so they
can't be used to set nonsensical values. (Which leads to immediate
crashes.) I'm sure this wasn't always a problem, but...
2018-01-22 21:31:41 -08:00
Eric House
efad90dd64 update strings for new release 2018-01-22 08:31:17 -08:00
Eric House
cbb683fc74 fix env-mapping crash in jni due to race condition
As reported to google, dict iterator destruction was crashing due to a
race condition if it happened after a game using the same dict had been
closed since it needed a mapped env that the game closure would
remove. Fixed in two ways, one by adding the mapping prior to the code
that uses it (a common pattern: add happens many times, whenver it might
be needed, but remove only once), and second by passing env into the
code that was crashing.

The mapping stuff remains inherently racy and I'm not sure now how to
fix that. It depends on there being a place to unmap after which it's
guaranteed the mapped value won't be needed again. When two
objects (game and dict_iter in this case) map the same env/thread combo
there's a race.
2018-01-22 07:45:43 -08:00
Eric House
134bcbdfa4 cleanup
Add new method with default values, etc: no change in behavior
2018-01-21 21:53:04 -08:00
Eric House
5f0c3bf4bd fix DEBUG assertion: unexpected Actions are expected
Looks like the assertion was left in when adding support for dual-pane
mode, as all other onPosButton() implementations called super rather
than assert. Which this one does now too.
2018-01-21 21:39:14 -08:00
Eric House
ecd6531ce3 add comment; tweak string
best I can do to respond to a suggestion on weblate.
2018-01-19 22:54:20 -08:00
Eric House
19a6672785 don't show current players tiles in list of remaining 2018-01-18 22:02:06 -08:00
Eric House
5afd8763b4 include Catalan translation in changes 2018-01-17 21:19:57 -08:00
Eric House
cdb22defcf cleanup; don't list unack'd acks 2018-01-17 21:17:09 -08:00
Eric House
339779e88e add ip of localhost as comment
Stops having to remember it every six months....
2018-01-17 21:07:28 -08:00
Eric House
efec6aba66 Merge branch 'android_branch' into android_translate 2018-01-17 20:54:49 -08:00
Eric House
42b521f144 switch positions of two PreferenceScreens
putting more oft-used on top
2018-01-16 07:54:33 -08:00
Eric House
a83f3617de up copyright for new year 2018-01-16 07:50:02 -08:00
Weblate
0aa8874e4d Merge remote-tracking branch 'origin/android_translate' into android_translate 2018-01-08 22:20:10 +01:00
naofum
999b7c1217 Translated using Weblate (Japanese)
Currently translated at 73.8% (549 of 743 strings)
2018-01-08 22:20:09 +01:00
Joan Montané
9278179d4c Translated using Weblate (Catalan)
Currently translated at 74.0% (550 of 743 strings)
2018-01-08 22:20:08 +01:00
Eric House
8c9e79f0fc add settings for debugging/tracking GCM 2018-01-03 21:32:23 -08:00
Eric House
11be66eb3f correctly report number of pending moves resent
Was overwriting rather than accumulating.
2018-01-02 22:50:41 -08:00
Eric House
e5ae940216 use AtomicReference. 2018-01-01 20:19:24 -08:00
Eric House
b24a004cab wip: get rid of join() from main thread
Getting ANRs because (I think) the main thread's waiting for the write
thread to die and now the write thread's doing a ton of work
sometimes. So move the threads into a standalone object that can be
allowed to die on its own time without anybody waiting.
2018-01-01 20:19:16 -08:00
Eric House
ea985e2f7a tweak changelog 2017-12-31 12:20:41 -08:00
Eric House
11c3d8fdf6 skip trying UDP after five failures 2017-12-31 10:19:06 -08:00
Eric House
4f7a12f5a1 don't claim "no move" when search interrupted
I *think* the reason I'm occasionally seeing toasts about not finding a
move is that when the engine's interrupted by there being a UI event in
the queue that error is posted. Instead try posting only when at the end
of the search nothing's been found.
2017-12-31 09:54:55 -08:00
Eric House
6de1305c8e don't show error twice 2017-12-30 15:15:52 -08:00
Eric House
2c5720fddc tweak icons; make and add untrade 2017-12-30 15:07:11 -08:00
Eric House
b0fe00f502 update build instruction
And include the problem with 'convert' on MacOS
2017-12-29 17:56:50 -08:00
Eric House
5e20e54638 try to speed up delivery when udp not working
Having reconfigured to use non-existent relay port as a test of falling
back to the web apis, tweak stuff: send the packets that have been
accumulated when an EOQ is found (rather than dropping all of them
immediately) before exiting the write thread; and start the threads up
when posting a packet in case they aren't (they may not be when the post
happens via timer firing.)
2017-12-27 15:03:28 -08:00
Eric House
9fd4a90ccd use currentTimeMillis() for time
Everybody else does....
2017-12-27 14:43:25 -08:00
Eric House
17f27a1b65 remove relayStatus() from jni
Making it a no-op as the only thing it did, tweaking the net status
indicator, isn't useful.
2017-12-27 14:42:15 -08:00
Eric House
de691af7ca oops: save outgoing UDP acks, not web ones
Incorrect ! meant that outbound ACKs were saved for web sends rather
than UDP and so couldn't be resent in the case where fallback to web was
needed.
2017-12-27 12:30:02 -08:00
Eric House
10df914897 ignore folders and generated file 2017-12-22 08:02:49 -08:00
Eric House
7099a7627a wip: toward being able to resend ACKs again 2017-12-21 21:22:40 -08:00
Eric House
d134077d87 move ack timer off of ui thread
Seemed to be causing ANRs. Integrate instead into outgoing message queue
by using poll(timeout) then checking for unack'd packets every time
through the loop (but not more than once/3 seconds or so.)
2017-12-21 21:22:40 -08:00
Eric House
af58110489 add missing deb packages 2017-12-20 21:45:20 -08:00
Eric House
8d9889ccc4 cleanup, e.g. use label to exit outer loop 2017-12-19 07:30:31 -08:00
Eric House
ed57a744b6 use the new built-in game_receiveMessage
I'd forgotten it...
2017-12-19 07:28:19 -08:00
Eric House
16dc1b15bd update release strings and changelog 2017-12-18 22:45:45 -08:00
Eric House
5772718537 mark packets with udp-sent time
Presence of timestamp instead of a boolean determines whether packet
should next via Web. Timestamps might also allow to process a larger
number of unacked packets in a single timer fire....
2017-12-18 18:58:19 -08:00
Eric House
2339f09557 start skipping UDP when acks aren't coming
Track ack'd and unack'd packets. When there are ten more of the latter,
skip the UDP-send step. This is probably not the algorithm I'll settle
on (an explicit PING to the relay over UDP might be simpler), but it's
simple and easy.
2017-12-18 18:13:04 -08:00
Eric House
ec698c4c62 remove empty strings (currently an error) 2017-12-17 11:17:23 -08:00
Eric House
de8993c2e5 Merge branch 'android_translate' into android_branch 2017-12-17 11:13:32 -08:00
Eric House
771c9ba4a6 add three navbar icons from The Noun Project
with attribution of course.
2017-12-17 11:07:43 -08:00
Eric House
dc964ea6c1 catch up small-board menu 2017-12-16 08:17:15 -08:00
Eric House
39dbe67929 add archive menuitem
As with Rematch, you should have the option once you've dismissed the
special alert that comes up when finished games are opened.
2017-12-16 08:06:20 -08:00
Eric House
da1c3f992a Merge branch 'android_branch' into relay_via_http 2017-12-15 07:20:53 -08:00
Eric House
b0befa62e3 remove logging 2017-12-15 07:17:14 -08:00
Eric House
2db67ed339 try send via udp, then web
Send each packet via UDP if that's thought to be working (always is,
now) and start a 10-second timer. If it hasn't been ack'd by then,
resend via Web API. Tested by configuring to use a UDP socket that the
relay isn't listening on. Only problem is that the backoff timers are
broken: never stops sending every few seconds.
2017-12-15 07:12:14 -08:00
Eric House
c7a635285c change text and names around native-vs-web choice
The plan's to use the native relay protocol first, then to fall back to
the slower but more reliable (esp. on paranoid/block-everything wifi
networks) webAPI. This is the name change without behavior
change (except that the native kill() to report deleted games is gone.)
2017-12-14 06:47:03 -08:00
Eric House
bda545fc8e comment out iface
On Linode anyway the relay's unreachable from python scripts unless I do
this, and it seems harmless in local tests too.
2017-12-14 06:39:40 -08:00
Eric House
e96a982f24 get rid of moved file already 2017-12-12 06:59:31 -08:00
Bernard Massot
70aeef6c8e Translated using Weblate (French)
Currently translated at 99.1% (737 of 743 strings)
2017-12-11 17:46:23 +01:00
Eric House
ddadee9bef copy in changes from dev branch 2017-12-11 07:09:44 -08:00
Eric House
4746f153e3 add assertion
Need to revisit that join() call; this'll help.
2017-12-11 06:56:53 -08:00
Eric House
4fa8079bf0 log outgoing "post" params json 2017-12-11 06:55:25 -08:00
Eric House
d1a5a94740 fix crash processing multiple packets
When grouping to allow multiple packets per outbound API call I forgot
that some are there to mark the end-of-queue: can't be sent! Trying
caused a NPE. Now if any EOQ is found in the queue that batch is dropped
and the thread's exited.
2017-12-11 06:42:35 -08:00
Eric House
701e6968de file to pull an apk
app-id is hardcoded for now.
2017-12-10 11:56:52 -08:00
Eric House
fc4e577f1b bring changes over from dev branch
old tests pass without any socket leakage
2017-12-10 08:21:22 -08:00
Eric House
2e71aedc02 fix --game-dict option 2017-12-09 21:32:05 -08:00
Eric House
8d10dca23e pull in test scripts from dev branch 2017-12-09 20:39:16 -08:00
Eric House
afda9ce446 add assertion 2017-12-09 13:30:25 -08:00
Eric House
530e0181e5 list open sockets 2017-12-09 13:30:08 -08:00
Eric House
811c8f535e add socket refcounting
AddrInfo now has ref()/unref() and keeps a global socket->refcount map
(since actual AddrInfo instances come and go.) When the
count drops to 0, the existing CloseSocket() method is called. This
seems to fix a bunch of race conditions that had a socket being closed
and reused while old code was still expecting to write to the device
attached to the socket the first time (along with lots of calls to close()
already-closed sockets, attempts to write() to closed sockets, etc.)
2017-12-07 07:18:09 -08:00
Eric House
dbf38f7759 don't use mlock in config; don't close socket
Use of mutex logging recurses infinitely if config uses mlock, so remove
that. And don't free sockets after handling their messages as they may
be in use elsewhere. This likely introduces a leak of sockets.
2017-12-06 19:11:32 -08:00
Eric House
243eb213bb make reply messages a param within result
Makes it easier to debug by adding stuff on the relay end
2017-12-06 18:57:48 -08:00
Eric House
70dea02efc cleanup; fix possible socket drop
Haven't seen it happen, but I think there was a bug that could have led
to all the sockets coming back as ready from poll() being dropped. Fixed
that and added/cleaned up some logging.
2017-12-04 20:40:44 -08:00
Eric House
d5c4ecabce rename class; add some logging
Rename class that's no longer just about UDP as it began. Add a bit of
logging. This commit *should* not change behavior at all.
2017-12-03 19:18:36 -08:00
Eric House
fd5549014a fix logging 2017-12-03 18:52:06 -08:00
Eric House
17d3f14d9e kill script when no change for two minutes
by default -- there's a flag for that too.
2017-12-03 17:05:02 -08:00
Eric House
e485af925f log milliseconds: seconds not enough. 2017-12-03 16:07:30 -08:00
Weblate
6ffd4d4a37 Merge remote-tracking branch 'origin/android_translate' into android_translate 2017-12-01 04:25:46 +01:00
Eric House
45bb36e66c pad log and db file names for better sorting 2017-11-30 07:43:04 -08:00
Eric House
f1b91f4df2 exit if tile line hasn't change in 2 minutes 2017-11-29 20:39:15 -08:00
Eric House
12ab4bdc5c print total runtime on exit 2017-11-29 20:02:27 -08:00
Eric House
db0d5ef746 tweak display; add signal handler for clean shutdown 2017-11-29 19:32:27 -08:00
Eric House
f9c92ca34f tweak device-in-game summary
Group devices by game so connectivity is easier to watch.
2017-11-28 07:08:41 -08:00
Eric House
4b81b784fc Merge branch 'android_branch' into relay_via_http 2017-11-28 06:24:09 -08:00
Eric House
8e37551f8a up changelog for new release 2017-11-27 20:40:16 -08:00
Eric House
455373343a remove requirement for gcm.jar
remove from xw4d version too since it can't work anyway.
2017-11-27 20:40:16 -08:00
Eric House
af81342021 create new fdroid variant 2017-11-27 20:40:06 -08:00
Eric House
503702c0e4 log unack'd packets 2017-11-26 20:56:38 -08:00
Eric House
0d8aef06f3 keep packets until ack'd for retry and better logging 2017-11-26 20:11:25 -08:00
Allan Nordhøy
9572cdca1b Translated using Weblate (Norwegian Bokmål)
Currently translated at 55.6% (411 of 738 strings)
2017-11-26 15:49:40 +01:00
Eric House
58eafd5fd1 fix glitches in XML strings for Norwegian 2017-11-20 22:04:42 -08:00
Eric House
3216ef8a5c Merge branch 'android_branch' into android_translate 2017-11-20 06:53:34 -08:00
Eric House
b6124ca2d1 change version strings and changelog 2017-11-19 20:10:54 -08:00
Eric House
4698c0e54b add not-again explanation for new archive feature 2017-11-19 20:00:45 -08:00
Eric House
039dcdf0cc print how long run has left 2017-11-19 19:40:29 -08:00
Eric House
ae98425c21 output game progress as a table 2017-11-17 08:06:23 -08:00
Eric House
e7d00cbad4 fix TIMEOUT calculation 2017-11-16 08:29:22 -08:00
Eric House
5ff6f2ca22 fix TIMEOUT calculation 2017-11-16 08:27:51 -08:00
Eric House
ba9b94a0c6 move g_free after last use of ptr
(Made same on another branch but couldn't cherry-pick)
2017-11-16 08:18:39 -08:00
Eric House
f45dcb36b1 rewrite of shell script in python3
translate the most-used features of my too-big-for-bash script into python3,
which is clearly much better suited. Tried to keep the structure and variable
names intact so that diff has a chance of showing something, but when a class
replaces a bunch of arrays that were being kept in sync there's only so much
you can to. Currently doesn't support stuff like app upgrades and switching
from tcp to udp, but those should be relatively easy to bring over from the
.sh when/if I need them.
2017-11-16 08:15:06 -08:00
Eric House
9d02237f19 add assertion to catch too many players 2017-11-16 08:14:49 -08:00
Eric House
236124319a rewrite of shell script in python3
translate the most-used features of my too-big-for-bash script into python3,
which is clearly much better suited. Tried to keep the structure and variable
names intact so that diff has a chance of showing something, but when a class
replaces a bunch of arrays that were being kept in sync there's only so much
you can to. Currently doesn't support stuff like app upgrades and switching
from tcp to udp, but those should be relatively easy to bring over from the
.sh when/if I need them.
2017-11-16 08:04:18 -08:00
Eric House
8b4042a082 add assertion to catch too many players 2017-11-16 07:59:06 -08:00
Eric House
768b63df24 move free() after last use of ptr 2017-11-15 05:48:45 -08:00
Allan Nordhøy
e6a1aef7a2 Translated using Weblate (Norwegian Bokmål)
Currently translated at 11.6% (86 of 738 strings)
2017-11-14 06:48:41 +01:00
Eric House
2879055ca9 log url when response code isn't 200 2017-11-13 08:17:26 -08:00
Eric House
8d99ddee7d Merge remote-tracking branch 'maidu2/relay_via_http' into relay_via_http
(Will probably never use this file...)
2017-11-13 07:30:28 -08:00
Eric House
5166933be6 Merge branch 'android_branch' into relay_via_http 2017-11-13 07:27:17 -08:00
Eric House
033ceab9d1 log outgoing params 2017-11-13 07:26:47 -08:00
Eric House
607567cd35 don't allow duplicate group names
If group already exists, warn rather than create another with the same
name.
2017-11-12 22:50:45 -08:00
Eric House
c2eff7d3f2 add "archive" option to dialog on opening done game
Create the group if needed. Name's not user-editable at this
point. Should be a preference, and that preference should be changed if
user renames it.
2017-11-12 22:31:48 -08:00
Eric House
b77ea0aaad copied from relay_via_http branch
(was at: ./xwords4/android/scripts/relay.py) This is the web API clients
can use to talk to the relay.
2017-11-12 20:29:15 -08:00
Eric House
f072c68bf9 bring in changes from relay_via_http branch
It's time to make them live so client development can use a live relay,
and all the old tests pass, so why not.
2017-11-12 20:25:29 -08:00
Eric House
35d172225f Use AtomicInteger rather than synchronization 2017-11-12 20:10:51 -08:00
Eric House
373c0249bc start backoff timer at 5 second, not 30.
Makes the http case nearly as quick as the udp one when both games are
on the same device. Which is all I've tested so far.
2017-11-12 20:04:22 -08:00
Eric House
fb4f44b0fc remove mistaken assert
I'm not quite sure why it was firing, but the pattern of a FindGame
failing due to a race condition and requiring a retry exists elsewhere
in the code. Lots of tests pass once this change is made. :-)
2017-11-12 19:59:20 -08:00
Eric House
8650795a81 don't crash when can't reach relay via http 2017-11-12 08:53:19 -08:00
Eric House
ec075eff18 comment out assertion that's firing when db wiped 2017-11-11 18:49:23 -08:00
Eric House
5bd71ba7c5 put cids back into the database
The hack I came up with for storing them in memory isn't working. Even
if it's just that I don't understand C++ maps they need to be cleared
when the DB's wiped (my favorite test these days) and I don't want to
spend the time now.
2017-11-11 18:46:02 -08:00
Eric House
057728c287 make gtk include an invite ID in rematch invitations
otherwise Android refuses to accept the second "" it receives.
2017-11-11 16:39:09 -08:00
Eric House
cb87a849ab rename dict symlink
It breaks rematch that "dict" is being passed to the Android client from
the linux side, and this is easier than figuring out how and when to
dereference the link.
2017-11-11 16:12:06 -08:00
Eric House
fa52c5091a fix tap down lower not opening game
Making the right_side elem match its parent height prevents the
lower-right region of game list items from falling through and
triggering a toggle-selection event.
2017-11-11 15:45:00 -08:00
Eric House
39deeeb089 fix tap down lower not opening game
Making the right_side elem match its parent height prevents the
lower-right region of game list items from falling through and
triggering a toggle-selection event.
2017-11-11 15:43:07 -08:00
Eric House
3da5f237c6 add asserts to catch non-web holdouts; don't crash
Getting nulls when e.g. the relay isn't up. Shouldn't crash in that
case.
2017-11-11 15:31:36 -08:00
Eric House
bd4ddb0adf name change 2017-11-11 15:26:09 -08:00
Eric House
878875dd34 revert DB changes -- don't need 'em now
It'll be a lot easier moving the relay forward if I can not change the
DB.
2017-11-11 13:26:44 -08:00
Eric House
c2d5f2d253 cleanup 2017-11-11 13:05:25 -08:00
Eric House
e2c6480992 fix linux client
everything takes one param now, and post sends an array
2017-11-11 12:57:33 -08:00
Eric House
f428538afc send an array of packets to post()
Somethimes there are several on the queue, so why not send all at
once. Note: this will break the linux implementation which I'll fix next.
2017-11-11 10:47:26 -08:00
Eric House
b9800b22f5 RelayService uses web instead of UDP!
As expected, moves are no longer received instantly because the UDP
socket isn't available for the relay to write too once the URL
handler (relay.py) finishes.
2017-11-11 09:56:20 -08:00
Eric House
4a3133924a name change for clarity 2017-11-11 09:14:35 -08:00
Eric House
0831bd8022 talk to relay.py/kill, first web api use from android
And it seems to work!
2017-11-11 08:22:52 -08:00
Eric House
31123b72ce fix failure to notify relay of half-game deletion
Wasn't detecting as a relay game something registered on relay but not
yet joined by another device, a common case!
2017-11-11 08:13:29 -08:00
Eric House
da3f6db9e4 fix failure to notify relay of half-game deletion
Wasn't detecting as a relay game something registered on relay but not
yet joined by another device, a common case!
2017-11-11 08:10:48 -08:00
Eric House
acf668ae8a add new prefs controlling web api usage
Add, but don't use yet, prefs giving relay.py path and checkbox whether
to use the new APIs.
2017-11-10 22:16:15 -08:00
Eric House
f2c4c82129 a shot at no-conn connecting
Ideally the comms module wouldn't go through its connecting routine in
order to join a game. To that end I added a join() method to relay.py
and code to call it. Joins happen (pairing games, starting new ones,
etc.), but after that communication doesn't. First part of fixing that
would be to make cookieID persistent and transmit it back with the rest
of what join sends (since it's used by all the messages currently sent
in a connected state), but I suspect there's more to be done, and even
that requires a fair number of changes on the relay side. So all that's
wrapped in #ifdef RELAY_VIA_HTTP (and turned off.)
2017-11-10 21:34:02 -08:00
Eric House
ecc247d56d fix a couple of obvious bugs 2017-11-10 20:30:25 -08:00
Eric House
d1e6a0d1d3 fix seed comparison: ints vs strings
Was coming in as a string when called via curl. This may be a problem
for other ints if I go with lots of params instead of a json, which is
looking less likely.
2017-11-09 06:47:33 -08:00
Eric House
d0dd7a2c02 new columns required by relay.py's join() 2017-11-08 08:07:47 -08:00
Eric House
205adf0d0f add prototype of join()
join's how devices will create or join existing games. It more
compilicated than I'd like but seems to work except that once a slot's
assigned it's unavailable to anybody else even if the other fails ever
to respond (i.e. needs the ACK function of the c++ relay.)
2017-11-08 08:04:57 -08:00
Eric House
6c8b9d5277 fix query syntax: % operator bad 2017-11-07 07:34:06 -08:00
Eric House
c661c8a74e basic join() (inserting/updating game records) works 2017-11-07 07:33:04 -08:00
Eric House
e6acd0fbcc beginnings of new relay: shows persistence
Mostly comments, it's where I'll start to think about the API for a
web-app version of the relay. The server itself ought to exist
already.
2017-11-05 19:24:41 -08:00
Eric House
02f05dc867 fix to compile with UDP packet logged
to match up with delivery on client
2017-11-04 09:27:33 -07:00
Eric House
7efcdf0cb8 script for tracking message delivery
The http-based comms flow is stalling. This will help figure out why.
2017-11-04 09:27:33 -07:00
Eric House
1648c9b3e3 tweak to start GTK games and run a long time
I'm trying to fix game-start-time right now....
2017-11-04 09:27:33 -07:00
Eric House
3a2953427a combine adjacent QUERY tasks
Trying to reduce the size of the queue. Eventually the lists of relayIDs
will need to be merged.
2017-11-04 09:27:33 -07:00
Eric House
c4312a2158 new files that may replace GSList in relaycon
If I want to move relaycon into common so Android can use it (assuming
the jni code starts including json-c and libcurl so it can handle
networking) I'll need a replacement for GSList. This is a start.
2017-11-04 09:27:33 -07:00
Eric House
9f5f5da29c add more required debs 2017-11-03 18:07:12 -07:00
Eric House
24171d8317 log more about tasks 2017-11-02 07:16:51 -07:00
Eric House
3dfd419ec7 relay returning NOTHING is a thing; deal with it 2017-11-02 07:16:11 -07:00
Eric House
55f5b500e3 cleanup: method names and logging 2017-11-02 06:19:35 -07:00
Eric House
66d6240ece better git revision fallback 2017-11-01 06:12:04 -07:00
Eric House
220918e5cd fix to compile with gdk3.2 (latest Debian) 2017-11-01 05:16:32 -07:00
Eric House
61937ac2d0 use float consistently
timeout of 0 was not making the relay.py script happy
2017-10-31 20:07:12 -07:00
Eric House
a1433e5f3d add kill to relay.py; call from test script using curl
It'll eventually get called from Android and maybe linux, but for now
it's cool to have games disappear from the showinplay display when
they're done.
2017-10-31 20:05:07 -07:00
Eric House
8aeba861cf fix script to move db files again 2017-10-31 06:38:32 -07:00
Eric House
23f0d54f63 tweaks: add comment; show only pending messages 2017-10-30 19:07:13 -07:00
Eric House
d2897d6dc8 fix to match format of empty return case 2017-10-30 19:06:38 -07:00
Eric House
8ee17493ac log length of task lifetime
Need to figure out where the delays are.
2017-10-30 07:12:34 -07:00
Eric House
3d3a986dbd log count of tasks abandoned in queue on shutdown
This confirms that I need to process outgoing messages more quickly,
likely by combining them.
2017-10-29 09:46:51 -07:00
Eric House
1373d0b1db make min-run configurable
With the new http stuff, at least for now, it takes longer to get things
communicated and so killing games after 2 seconds of runtime meant no
moves ever got made. Making it configurable, and passing 10 (seconds)
means nearly all games in a large test run complete reasonably quickly.
2017-10-29 09:26:07 -07:00
Eric House
7b50c90aac pass timeoutSeconds
ACK doesn't need to wait 2 seconds for a reply, and when it does so the
next send waits too. Eventually we'll want to combine messages already
in the queue into a single send. For now, this makes things better.
2017-10-28 20:12:05 -07:00
Eric House
7c22d1fdf8 fix failure of http apps to ack relay
Change how acks are handled by adding ability to look up connname by
combination of hid and token. It's a bit of a hack, but it's already
there in the protocol and enough to find the game.
2017-10-28 16:29:04 -07:00
Eric House
3e9381d946 use a single timer and a queue for received data
using g_add_idle() for each piece of data received on the (background)
curl-query thread wasn't working. They were getting starved, and I think
some were considered duplicates and never scheduled. So add a single
timer proc called every 50 ms and a queue that it checks and into which
the network thread can put stuff.
2017-10-28 16:13:11 -07:00
Eric House
7d4fb1cc5d get rid of last [] from map access 2017-10-28 15:36:33 -07:00
Eric House
3215affd68 tweaks to test script 2017-10-28 15:31:17 -07:00
Eric House
e3b2a0e4e1 fix misbehavior by new in-memory map
I don't know why what I was doing didn't work, but removing access via
[] and using iterators passes all the asserts I could throw at it.
2017-10-28 15:01:31 -07:00
Eric House
952272172a always log bytes sent 2017-10-27 05:58:35 -07:00
Eric House
a8f06b53e2 test script; log threadid 2017-10-27 05:57:40 -07:00
Eric House
3645331061 pass hid in to db function getting per-dev info
Somehow I've been failing to treat this column as an array for some
time. I don't have any test cases that failed but it was clearly
wrong. Test cases still pass....
2017-10-25 20:33:25 -07:00
Eric House
051b6a7220 change resign-ratio to resign-pct
To match the way other pct stuff works, in part because it seemed it
didn't.
2017-10-25 20:00:55 -07:00
Eric House
6e06fdea07 stop storing cid in database
It's a runtime-only thing, explicitly removed from db on boot. So add a
map from connname->cid to the dbmgr class and modify that rather than a
column. Passes discon_ok2.sh tests as long as use-http stuff isn't on.
2017-10-25 19:56:56 -07:00
Eric House
14d9063ad0 add --room to error message/hint 2017-10-25 06:43:10 -07:00
Eric House
81df91c4db add commandline option to spec log dir location 2017-10-25 06:34:55 -07:00
Eric House
d05a67ed4b switch to milliseconds 2017-10-25 06:15:46 -07:00
Eric House
cc54621e45 store message first, remove on ack 2017-10-25 05:51:45 -07:00
Eric House
c68a067009 add option to not check moves except manually 2017-10-24 19:18:19 -07:00
Eric House
6ff13e6e23 move 'check moves' menu to main window 2017-10-24 19:14:23 -07:00
Eric House
342d229be1 refactor 2017-10-24 07:07:22 -07:00
Eric House
28bec6d456 implement checkForMoves menu again 2017-10-24 06:20:08 -07:00
Eric House
2cfac68f91 leave out entries without relayIDs
SQL is the easiest place to filter
2017-10-23 21:08:14 -07:00
Eric House
c3887b9c77 use a single thread and a protected queue
I don't want race conditions between threads talking to the server.
2017-10-23 21:07:05 -07:00
Eric House
6787fe1406 fix length byte 2017-10-22 21:29:16 -07:00
Eric House
4583b5d88d use ! with struct instead of ntohs 2017-10-22 15:47:01 -07:00
Eric House
4c15723f90 add http option to test script 2017-10-22 11:43:56 -07:00
Eric House
16ee3e9439 rename and make self-initing 2017-10-22 10:05:36 -07:00
Eric House
523fd26eee make relay hostname configurable 2017-10-22 09:58:01 -07:00
Eric House
f49c81462c wip: received messages dispatched to games 2017-10-22 09:29:15 -07:00
Eric House
43ffb156fc wip: successfully get list of moves 2017-10-22 07:30:14 -07:00
Eric House
47a048d553 fetch relayIDs from db 2017-10-21 16:05:54 -07:00
Eric House
a65af79953 add check for being on main thread 2017-10-21 15:23:46 -07:00
Eric House
ec7fde3b62 add relayID to DB and to table 2017-10-21 14:59:10 -07:00
Eric House
a6602fabe0 hide menuitem when not in http mode 2017-10-21 14:24:38 -07:00
Eric House
284888df44 add timeoutSecs param 2017-10-21 12:13:19 -07:00
Eric House
37162e0471 fix curses commit; refactor & cleanup 2017-10-21 12:11:26 -07:00
Eric House
816df4336c run post in thread since it takes time 2017-10-20 06:26:46 -07:00
Eric House
3045697d31 wip: process moves received 2017-10-19 21:20:14 -07:00
Eric House
5223ccabe1 add option to run forever 2017-10-19 20:50:33 -07:00
Allan Nordhøy
ebe594ed1d Added translation using Weblate (Norwegian Bokmål) 2017-10-19 11:48:34 +02:00
Eric House
4a1e51b54a call query from C
Very rough code that fetches messages and does nothing with them.
2017-10-18 22:03:14 -07:00
Eric House
7414e0eeae param should be json array as string 2017-10-18 22:02:14 -07:00
Eric House
9b486d77fb shrink column to shrink display 2017-10-18 21:19:42 -07:00
Eric House
3ffef37d77 don't require myKey.py 2017-10-18 21:19:09 -07:00
Eric House
fbaa1f139e add test method and implement query() endpoint 2017-10-18 21:18:30 -07:00
Eric House
e6e93c09ab oops: use the right length 2017-10-18 07:19:43 -07:00
Eric House
c08be98fda wip: include multiple packets in reponse json 2017-10-18 07:09:05 -07:00
Eric House
b86ffeb2b9 wip: data gets to relay and response handled
A device registers and a game can start. But we don't get to being
able to make a move yet.
2017-10-18 06:53:15 -07:00
Eric House
2dc80ac93f talk to new python script to interface with relay
So far uses curl and json-c to send b64-encoded data to new script
which is able to echo the data. Next that script will need to open a
UDP socket to the relay and return results that appear before timeout.
2017-10-17 21:32:11 -07:00
Andreas Kleinert
b7c72dd1e6 Translated using Weblate (German)
Currently translated at 8.4% (62 of 738 strings)
2017-10-17 20:45:54 +02:00
Eric House
6b0fe35c8f use readFully() rather than read()
readFully() blocks; read() can return with less than you expect.
2017-10-16 22:12:35 -07:00
Eric House
927c4f12a0 make tap on thumbnail select/deselect
Working around there being a border around the game-type image area.
With this change long-tapping works only on the right 2/3 of the
region. There might be a fix, but it's still better than there being
a hole (the border) in the thing where behavior's different.
2017-10-14 14:31:41 -07:00
Eric House
fd3220c1c2 Merge branch 'android_branch' of github.com:eehouse/xwords into android_branch 2017-10-12 21:15:08 -07:00
Eric House
1e38069b94 update script seen by those without the app installed 2017-10-12 21:14:07 -07:00
Eric House
c7f0090e15 fix script that makes the db
I've had it wrong all these years. Thanks Dave!
2017-10-10 20:36:36 -07:00
Eric House
37ecd81c04 change param names
about to introduce a second. This will make things clearer. No code
change here though.
2017-10-10 20:17:36 -07:00
Eric House
0a774625a1 cleanup 2017-10-10 20:17:36 -07:00
Eric House
4717308c4d make new installs easier
Add make target and script option to install debs
2017-10-10 19:56:22 -07:00
Eric House
36aef059c1 remove assertion: deviceID can change
Hit this nuking the devices table mid-game. Games recover with the
assertion removed (and storing the new/non-matching deviceID)
2017-10-07 10:47:44 -07:00
Eric House
3e8839636e preserve hid when recreating games
When a device reconnects and there's no record for its
game (e.g. because an ISP's screwed up and the db and its host are
lost), recreate but keep the device's hid (position in the arrays
indicating mostly whether it's the inviter or invitee.) Tested by
running the linux scripts and deleting the games table mid-way
through, but not yet tested with android devices.
2017-10-07 10:14:27 -07:00
Eric House
2cabf2332c fix compiler-found (but trivial) error
debian's new compiler rocks. Effected only test code I never use, but
still nice to fix.
2017-10-07 08:03:18 -07:00
Eric House
c9a86a23e0 remove GCM-related receiver from shared manifest
Duh. The .java file was removed, but the declaration that all apps can
handle an intent (that requires WakeLock they no longer all have) was
not. Should fix crashes I'm seeing.
2017-09-28 20:02:05 -07:00
Eric House
bbffe4caf1 Add assert prior to removing dead (?) code
There should no longer be a need for curThis(), but let's confim by
asserting for a while.
2017-09-28 06:51:59 -07:00
Eric House
a3bf942004 fix assertion by not handling Action
Was wrong to assert that unexpected Actions never arrived.
2017-09-28 06:51:24 -07:00
Eric House
79e852a9eb change ID of duplicate menu
Board and Games List were using same menuid which meant that even when
chosen from Board's menu it would up getting handled by GamesList (in
dual-pane mode.)
2017-09-28 06:50:16 -07:00
Eric House
d3b9a98518 fix to serve the oldest release newer than current
Removing hard-coded list of release .apks in favor of picking them from
the file system based on version code reported by aapt.
2017-09-27 20:39:58 -07:00
Eric House
7b691dfd2f offer to hide buttons when invoked from action bar 2017-09-26 07:34:54 -07:00
Eric House
604119f99b stub out GCMIntentService for d variant
Somehow the d variant was crashing without the WAKELOCK permission, the
OS having invokes something GCM-related. This should ensure nothing
GCM-related can ever happen.
2017-09-26 07:01:55 -07:00
Eric House
6fa01eb971 move GCM-related permissions into new manifest
Create an AndroidManifest.xml specific for the xw4 variant, and move the
GCM-related permissions (including WakeLock) into it.
2017-09-25 06:17:44 -07:00
Eric House
fd7f564e11 add debug menu to copy git info to clipboard
Makes it easier to find out what the diffs were.
2017-09-24 14:40:31 -07:00
Eric House
096aa3bd0f make GCM_SENDER_ID empty for xw4d variant build
This seems to fix that app, when built by me where GCM_SENDER_ID's set
in the environment, being a battery hog. Apparently google's code
doesn't handle being passed the wrong senderID very well.
2017-09-24 14:30:59 -07:00
Eric House
9bdf43a89e remove duplicated BuildConfig entry 2017-09-22 06:55:02 -07:00
Eric House
5dc9327d31 record current git-diff in assets 2017-09-22 06:46:19 -07:00
Eric House
618ee89add fix crash drawing game timer
It's outside the normal begin_/end_draw flow and so cairo wasn't set up
as expected.
2017-09-20 07:26:26 -07:00
Eric House
592a6429d4 up changelog and version strings 2017-09-20 06:40:42 -07:00
Eric House
39efbaa7f5 fix timer-draw NPE due to race condition
use runOnUiThread()....
2017-09-19 22:09:57 -07:00
Eric House
a328221b63 up version codes for new release
I somehow screwed up the last release, but google got the apk so
requires me to change the version number.
2017-09-19 07:46:17 -07:00
Eric House
dc29321b28 change strings for new release 2017-09-13 08:06:08 -07:00
Eric House
e98c25a81a fix crash by removing assert I didn't need
Looks like what I was worried about wasn't an issue.
2017-09-13 07:39:07 -07:00
Eric House
baf549189c add compile-time option for forcing square board
Disabled. Needed it for a test.
2017-09-13 07:38:22 -07:00
Eric House
ae25c6e014 fix list item breakage: no inputType for TextView
I'd added inputType="text" everywhere I added maxLines="1" but it turns
out that breaks touches being handled at least on some devices. And it
makes no sense to have an inputType for something user can't put into.
2017-09-12 07:56:40 -07:00
Eric House
058d3a7828 try to fix travis: copy over .enc file 2017-09-11 06:47:59 -07:00
Eric House
8efd608ac2 fold in (as diff, not merge) travis config 2017-09-11 06:16:47 -07:00
Eric House
54997f6db2 more EditText fixing 2017-09-07 07:51:57 -07:00
Eric House
2de54a2535 fix script for a gradle world 2017-09-07 07:45:33 -07:00
Eric House
d87a1ca7a8 fix EditText so monkey can't abuse it
Several EditText fields are configured so monkey breaks things, e.g. by
entering too much text in the default player name config. Fix. This
probably won't impact users but it lets the monkey tests move on to
other things that might.
2017-09-07 07:36:16 -07:00
Eric House
f161de2977 make menu consistent 2017-09-07 06:15:17 -07:00
Eric House
1ee5afd5cf add inputType=text to singleline EditTexts
Turns out the maxLine="1" thing needs this accompaniment or it'll let
you add carriage returns, as adb monkey found.
2017-09-07 06:13:14 -07:00
Weblate
11368df086 Merge remote-tracking branch 'origin/android_translate' into android_translate 2017-09-06 11:49:19 +02:00
Eric House
6866887438 include last commit in change notes 2017-09-05 19:23:21 -07:00
Eric House
8971837d22 fix crash on Samsung Galaxy Note 3 running 4.4
Can't repro on Nexus emulator running 4.4 nor on Samsung running 4.4.4,
but the reporter says this fixes it. And from reading it appears
expecting older devices to load Material themes without an AppCompat
library is wrong.
2017-09-05 19:17:02 -07:00
Eric House
f5e66463f9 up release strings for new version 2017-09-03 14:15:43 -07:00
naofum
406ffca333 Translated using Weblate (Japanese)
Currently translated at 73.8% (545 of 738 strings)
2017-09-03 14:15:26 -07:00
Eric House
51ca1777e2 make the have-chat icon green 2017-09-03 13:28:37 -07:00
Eric House
4549c397ae cleanup
don't check standalone games for chat messages
2017-09-03 10:38:54 -07:00
Eric House
2735144515 mark games with unread chat 2017-09-02 12:12:39 -07:00
Eric House
2616891608 remove/replace deprecated singleLine element 2017-09-02 12:12:39 -07:00
Eric House
a10dd6a314 make game sort order clearer and easier to modify
For the ORDER BY clause that governs how games are displayed within a
group, use a static string built from a list of clauses that are then
easy to move up and down. Add clause that moves games with unread chat
to the top. Another commit will modify the display so it's clear why
it's there.
2017-09-02 12:12:39 -07:00
Eric House
5ed9d2c6aa remove dead code 2017-09-02 11:24:58 -07:00
Eric House
1c3b5564b5 use same red/green for expiry as for net status
Slightly less glaring; slightly more consistency.
2017-09-01 08:12:38 -07:00
Eric House
e97dd26e6f fix missing "game in room NNNN" in games list
Looks like sometimes the TextField was GONE
2017-08-31 21:21:54 -07:00
Bernard Massot
e24f7bdba8 Translated using Weblate (French)
Currently translated at 91.1% (673 of 738 strings)
2017-08-31 21:21:54 -07:00
Eric House
a6d8708abc sort unconnected games to top of list 2017-08-31 20:07:40 -07:00
naofum
ecbfcb674c Translated using Weblate (Japanese)
Currently translated at 73.8% (545 of 738 strings)
2017-08-31 03:46:35 +02:00
Eric House
586899891d Merge remote-tracking branch 'weblate/android_translate' into android_translate 2017-08-30 07:22:36 -07:00
Eric House
79b0d38c0c tweak changelog 2017-08-30 06:30:25 -07:00
Eric House
8489d1401f only try to put up Wait/Invite alert once
Bring back the test for being null, and add an additional one via a new
boolean iVar that we haven't tried posting it already. On some devices
there's enough of a lag that the is-null test passes several times
before the first makeDialog() call, leading to a cascade of attempts to
create that hangs the UI. The test's needed, but only once should be
start the process.
2017-08-29 07:33:15 -07:00
Eric House
077159b8c4 save commitID in instanceState
When the back stack is restored commit() is not called, so the fragment
needs to save it. Without this 0 is passed to popBackStack() and
everything's dismissed, not just the one fragment.
2017-08-29 07:31:37 -07:00
Eric House
741dbf2bed fix finish() to close a specific fragment
Rather than just pop whatever's on top of the back stack, which might be
the alert whose listener called finish(), use saved commit() ids to pop
down to the fragment itself. This feels like a risky change, and it's
tested only by back-button-dismissing the Wait alert in an unconnected
game in BoardDelegate, so needs some bake time.
2017-08-29 07:10:04 -07:00
Eric House
bb4c5502c8 save commit id in fragment 2017-08-29 07:03:52 -07:00
Eric House
270df00692 use new API to offer to hide buttons
When SDK >= 19 there's an API to tell if a listview is full enough to
require scrolling. So use that, rather than the raw count of games, to
decide whether to offer new users to hide the new game buttons.
2017-08-28 07:12:10 -07:00
Eric House
db658edc67 don't add to queue once it's stopped
No point in adding something if we're not going to process it.
2017-08-28 07:06:57 -07:00
Eric House
671d345377 remove most of xw4dbg's AndroidManifest.xml
What's here is merged with the main one, so no point in duplicating and
it's just a pain to maintain. Remove as much as possible that's not
unique to the debug variant (crashlytics and wifidirect, basically.)
2017-08-27 15:55:31 -07:00
Eric House
58f828c187 up version strings and changelog 2017-08-27 15:49:57 -07:00
Eric House
54be99b635 remove logging 2017-08-27 15:49:35 -07:00
Eric House
5914ad8a1d include ActionPair in serialization of DlgState
Oops. Debug build assertion showed I was leaving an infrequently used
field out of serialization, adn then required that that object be
Serializable and implement equals() to pass more tests.
2017-08-27 11:40:26 -07:00
Eric House
9231224eea explicitly use Theme.Material as app theme
Fixed Samsung having made a white actionbar default and so my menubar
icons becoming invisible.
2017-08-27 10:12:37 -07:00
Bernard Massot
2e73a4277b Translated using Weblate (French)
Currently translated at 91.1% (673 of 738 strings)
2017-08-27 12:45:42 +02:00
Eric House
ff415640fd sync variants' AndroidManifest.xml files 2017-08-26 11:02:27 -07:00
Eric House
24a38c8f46 cleanup connection status display text
Get rid of treating 0 as a legit date (1970 being illegit). Tweak
formatting. It's not perfect, but few people see it so we'll see how it
goes during development.
2017-08-24 06:58:53 -07:00
Eric House
1a36f3286b ignore generated files 2017-08-22 07:52:15 -07:00
Eric House
33f80fbefd up version strings for new release 2017-08-16 07:34:03 -07:00
Eric House
f7d4d6b637 sort by versionCode, then by file age
revert a bit, dropping use of git revision and repo to provide an
order. Instead use aapt (which is an ubuntu package now) to pull the
version code and appID from .apk files, order by versionCode, and
secondarily by file mod time.
2017-08-16 07:29:17 -07:00
Eric House
19c7543eb3 make finding most recent apk based on git revision
Auto-update was based on my manually setting what the newest is. Better
to use the git revision stored in the .apk, or failing that (later) in
the file name, to determine "age". This is all based on forcing a linear
order on git commits, but at least at the granularity of releases that
should be ok.
2017-08-14 22:40:07 -07:00
Eric House
bb846060e9 always add "self" choice to invite-by-relay-id list
Poorly integrated: you can delete it only to have it come back, but
send-to-self is just a debugging thing anyway.
2017-08-14 07:52:18 -07:00
Eric House
f795ae6de6 use same string for both download menuitems
Mistake was putting "download more languages" at the bottom of list of
wordlists in one language. Having separate strings is a bigger change,
and in context just "Download more" works in both cases. Change name of
string so translators will notice.
2017-08-14 07:18:16 -07:00
Eric House
eb34294679 fix failure to create game after downloading dict
Wasn't setting the necessary iVar...
2017-08-14 06:49:05 -07:00
Eric House
af48fb850d update strings for new release 2017-08-13 19:37:29 -07:00
Eric House
2f6c6b0644 fix ClassCastException: 0 isn't a long; 0L is 2017-08-13 12:59:58 -07:00
Eric House
ae86378bcd don't assert on DEBUG: too frequent
I need to fix this, but crashing all the time isn't the answer.
2017-08-11 06:25:25 -07:00
Eric House
ddfa3a567f Merge remote-tracking branch 'weblate/android_translate' into android_branch 2017-08-08 21:57:04 -07:00
Eric House
ba8a5ceeb6 up version for new release 2017-08-07 21:48:50 -07:00
Eric House
635fbed719 catch and drop illegal state exception
By inspection based on report to Play store.
2017-08-06 14:08:33 -07:00
Eric House
93a8aa77bf fix NPE
It might make sense to have default value of m_params be 0-length
array....
2017-08-03 07:13:32 -07:00
Eric House
6cee0c5bca check that all params are serializable
DEBUG builds only.
2017-08-02 07:20:48 -07:00
Eric House
455b6e79f0 use TextUtils.equals in new equals() overrides 2017-08-02 07:09:38 -07:00
Eric House
4ec930d53c fix array out-of-bounds exception 2017-08-01 22:22:44 -07:00
Eric House
bb367acab3 don't pass unserializable in params[]
Was, in rarely seen case, passing an object that couldn't be
serialized. Instead pass a few of its constituents than can, and
reconstitute using them.
2017-08-01 22:21:47 -07:00
Eric House
62dd6c12f7 remove unnecessary parameter 2017-08-01 22:03:47 -07:00
Eric House
c927dbef54 fix equals() implementation 2017-08-01 21:37:02 -07:00
Eric House
9a394b2541 comment out code with RELAYINVITE_SUPPORTED
Relay-invite code may never be released, so wrap it in compile-time test
that'll get it stripped.
2017-08-01 07:33:37 -07:00
Eric House
101c2ff8f2 fix problems with params[] serialization
Was passing through DlgState params a number of classes that weren't
serializable or that didn't have equals() methods required for DEBUG
assertions to pass. Added versions of equals() that just call super in
non-DEBUG case since it's a lot of code and isn't required except for
testing. (Serialization of course is.)
2017-08-01 07:28:17 -07:00
Eric House
d55d9573e4 fix some bundling/serialization problems
Now that params[] are being bundled all objects passed that way must be
serializeable. And as long as I'm asserting bundle success using
equals() the objects being serialized must implement it.
2017-07-29 20:59:00 -07:00
Eric House
80cc12fc79 up version strings and change list for new release 2017-07-29 20:21:23 -07:00
Eric House
e2c46963d8 fix crash (by inspection) with complete parcel save
I wasn't saving/restoring params[] Object array with DlgState, and under
circumstances I can't reproduce that could cause a null object
dereference I was via the Play store. So added a test case that failed
for DlgState instances that have non-null params arrays, and fixed that.
2017-07-28 07:37:57 -07:00
Dener Luiz da Silva
af7cf8edc0 Translated using Weblate (Portuguese)
Currently translated at 53.7% (396 of 737 strings)
2017-07-26 21:46:17 +02:00
Eric House
ca93f808f3 change invite alert track/dismiss logic
Attempt to fix invite alert sticking around after game connection
finishes, which resulted from the variable pointing to the alert having
been set to null. So stop setting it in onDismiss listener. I think
trying to track it via an iVar is a mistake, that dismiss by tag or
somesuch is the right way to go. But my dialog fragment code isn't up to
that yet.
2017-07-26 07:21:27 -07:00
Eric House
c6a72b63ee make relay invite record editable 2017-07-25 07:48:54 -07:00
Eric House
32c6a5e114 don't enable remove button when nothing's checked
Copy from SMS inviter code. Really should be moving that into the
superclass.
2017-07-23 17:50:47 -07:00
Eric House
a71d60db63 implement deletion; save with new serialization util
Add new Utils methods that turn Serializable objects into B64-encoded
Strings, and vice versa. Use in place of existing code, and use anew to
store the array of DeviceID records. Implement the "Delete checked" button.
2017-07-23 17:31:59 -07:00
Eric House
7eb9458a78 get invite-by-relayid working again
In Dbg version only (with enabling boolean moved to BuildConfig.)
Currently crashes when first used, and recipient can't always connect to
relay until app rebooted. And of course there are still open questions
like how to populate the list -- how user learns the deviceID of an
opponent.
2017-07-23 16:45:14 -07:00
Eric House
bd250cfe1e log before asserting 2017-07-19 07:16:18 -07:00
Eric House
41529a584c add recent changes to changelog 2017-07-19 06:35:26 -07:00
Eric House
d057de0fd3 add comment reminder of proguard problem 2017-07-19 06:27:56 -07:00
Eric House
72c624b251 track resends for each comms type
Was previously a "global" so that a resend over SMS might delay a resend
for relay games. Since communication problems tend to be
comms-type-specific that's dumb.
2017-07-19 06:26:11 -07:00
Eric House
52a1ccd4dc tweak comments 2017-07-19 06:16:22 -07:00
Eric House
64014944f3 finish: using java's base64 en/decoder from java
Added a wrapper function since for compatibility with the jni's encoding
the flags matter and need to be the same everywhere. Or at least there
should be no chance of their getting changed.
2017-07-13 07:40:28 -07:00
Eric House
94dca807ef use a singlton rather than one Time per object
De-serializing a Time formatter wasn't going well post-proguard, but it
was a dumb way to do it anyway when only one object is needed.
2017-07-13 07:20:24 -07:00
Eric House
fb91ba8608 fix (by inspection) store-reported NPE 2017-07-12 08:14:42 -07:00
Eric House
4f989c7a3e start using built-in base64 stuff
As a first step, use mine and android's and assert results are the
same. Note using built-in Base64 class requires moving the min android
version from 7 to 8.
2017-07-12 08:02:52 -07:00
Eric House
589929b3b2 enable proguard for debug builds
Copy config file into the right place, turn it on for debug builds, and
fix compile-time complaints by adding -keep clauses. Resulting builds
seem to work (after a few minutes in emulator only) except that net
status icon taps crash at first (eventually recovering somehow) likely
because of problems with base64 en/decoding which goes through jni.
2017-07-12 07:16:57 -07:00
Eric House
75488aefc0 use same SMS resend backoff for debug as release 2017-07-10 06:51:45 -07:00
Eric House
c8beefaafe tweak network status icon
Get rid of black background of center icon, instead running the green or
red all the way to the middle. For better contrast make the green and
red darker and the non-active arrows white.
2017-07-10 06:49:02 -07:00
Eric House
924dc1b37f remove assert
Looks like my theory was right. Logging is more than enough.
2017-07-05 07:53:41 -07:00
Eric House
15f50dc82a fix game config for rotation and connvia changes
The debug-only settings for disabling individual conn types weren't
kept in sync with which types were enabled, and that set of types was
lost on rotation. Fixed (including keeping the disableds across rotations.)
2017-06-30 06:34:24 -07:00
Eric House
b9d6b05d87 tweak logging 2017-06-29 07:28:15 -07:00
Eric House
d6bbccb773 let caller deal with result of message resend
Use a new interface to let caller of resendAllIf() know how many
messages were resent. If none, a new timer might not be called for.
2017-06-28 08:24:33 -07:00
Eric House
bdc1f5ff51 when game full drop message but don't assert
I'm seeing assertions when a game gets into a state I don't fully
understand: host receives messages that need a channelNo assigned but
the game's full. With luck they're duplicates and can be ignored,
because that's all I can do.
2017-06-28 07:04:15 -07:00
Eric House
33838e6a14 don't crash when crashlytics didn't get built in correctly 2017-06-27 07:34:04 -07:00
Eric House
d454ffb3e8 up changelog/strings for release 2017-06-22 07:12:51 -07:00
Eric House
4e101862a6 get rid of old standin for missing contact name
Since it's now possible to add a name for an SMS contact added manually,
don't assuming a missing name means it was added manually. Just leave
blank if not provided.
2017-06-21 07:59:22 -07:00
Eric House
e3e7add5a9 fix (I hope) script for harvesting jni sigs
I made these changes a while ago then stashed them. They worked when I
needed them then, and seem to work now, but I haven't verified now so
don't trust 'em too far. :-)
2017-06-20 22:05:39 -07:00
Eric House
a16cc8e648 replace Crittercism with Crashlytics, suckily
Crittercism is dropping free support of FOSS apps, so I'm dropping
it. Unfortunatly integration isn't as clean: so far at least I haven't
figured out how to make it possible for others to build the 'd' variant,
which includes Crashlytics, without their having a Fabric API key.
2017-06-20 21:48:40 -07:00
Eric House
6de5d307b3 add name field to manual sms contacts entry 2017-06-20 19:35:38 -07:00
Eric House
b33df6b222 reset SMSResend timer on new data only
Resetting it on every ACK etc meant it happened forever at the most
frequent interval, at least on devices that have both sides of a game,
which is my usual test setup.
2017-06-20 19:19:03 -07:00
Eric House
e6454070a6 remove an oft-firing assert
It's definitely happening, and disruptive though debug-only. So remove
to be tracked down eventually.
2017-06-20 19:17:23 -07:00
Eric House
e3a8bef3cb add new param
It's not the case that forcing send and showing UI go together.
2017-06-20 07:49:01 -07:00
Eric House
0b2920102b tweak chat layout; use better timestamp format 2017-06-20 07:47:32 -07:00
Eric House
3aefa3a566 don't make sound/notify on standalone game moves
I'm finding the robot move beeps annoying. If others aren't maybe a
preference would be better. We'll see.
2017-06-16 19:24:04 -07:00
Eric House
7f48267397 save non-destructive changes on "Play game" button
In game config, when the play game button's hit and the changes pending don't
"matter" (require reset), apply them. The motiviation is to allow
setting the "disableds" and immediately launching a game via the button,
but I think it's the right thing to do anyway. Needs testing.
2017-06-16 19:18:30 -07:00
Eric House
7bae112077 add timer to resend sms data messages
Deal with occasional droppage of SMS data messages by running a
timer (via AlarmManager) with backoff that resends any pending moves for
games connected via SMS. Successful receipt of SMS data resets the backoff.
2017-06-16 18:56:22 -07:00
Eric House
0b0a50bd5c add timestamp to chat messages, db and display
On send, add current seconds to message. Store and display in android
code. Display layout needs work.
2017-06-10 11:36:45 -07:00
Eric House
6f0fb66a0d fix three-year-old huuuuge memory leak
Hadn't run Valgrind in a while. There's another too, but much smaller
and harder to track down.
2017-06-07 08:07:42 -07:00
Eric House
f06e7bdd98 don't drop duplicate reconnect
When Android client is backgrounded with a game playing (BoardActivity
on top) then brought to front again it fails to reconnect to relay
because it didn't disconnect and the relay thinks it's still there. The
right fix is in making the java code do the right thing (complete
disconnect), but it seems harmless to just honor the reconnect in this
case. Doesn't even cause leaks, per valgrind.
2017-06-06 06:27:58 -07:00
Eric House
59285aa9f4 cleanup 2017-06-06 05:46:27 -07:00
Eric House
f85f7c41be add cmdline options to generate single-abi .so
Part of getting split builds going. I think.
2017-06-06 05:45:31 -07:00
Eric House
41683f95a7 improve activity lifecycle logging 2017-06-05 07:36:47 -07:00
Eric House
5c893127de remove constants from build.gradle
cleanup, iterating over built-in data rather than my hard-coded VARIANTS
and BUILDS arrays, which now go away. Renamed obj- and libs- directories
to better fit the variables the system provides.
2017-06-01 07:41:51 -07:00
Eric House
f49aac71cf get rid of <a> -- sucks in webview 2017-05-31 20:22:13 -07:00
Eric House
c53616fd82 wrap code in if(DEBUG) 2017-05-27 13:26:57 -07:00
Eric House
9644f40659 add ui for disabling comms send and receive
Add DEBUG-builds-only UI at the bottom of GameConfig for turning on the
comms feature dropping outgoing or incoming messages. The idea's to use
this to reproduce and fix stalls. There's a noticable slowdown opening
the GameConfig fragment, but it should all be no-op in a release build.
2017-05-26 07:49:38 -07:00
Eric House
95ec573169 save disabled booleans in comms state
I want them persisted since the GTK UI doesn't make sense and they
should effect background sends and receives too.
2017-05-26 07:30:42 -07:00
Eric House
a815c466c9 up strings for new release 2017-05-25 20:13:00 -07:00
Eric House
7164ab92f6 make FirstRunDialog a DialogFragment
It was disappearing when the device rotated. Using the same
XWDialogFragment mechanism as everything else fixes that.
2017-05-25 19:58:04 -07:00
Eric House
b6665a15c4 double-check to avoid crash (by observation)
Chasing a rare play-store-reported JNI crash: test for a null ptr in C
and assert/test in Java.
2017-05-25 07:10:49 -07:00
Eric House
d584c30a43 fix (by inspection) three Play store crashes
One race condition between BT threads; two edge cases around dialog
fragments, where I've left DEBUG build asserts in place.
2017-05-24 21:27:18 -07:00
Eric House
935932f440 don't try to upgrade fdroid builds
Add BuildConfig boolean that's true when a gradle property is passed in
from the fdroid metadata/build file. Test when putting together upgrade
state and omit app info when it's true, same as if from Play store.
2017-05-24 20:16:07 -07:00
Eric House
d58c601bf3 include git revision in assets/ dir (.gitignore it)
Makes it easier to see what's been built into an apk if the file's name
has changed.
2017-05-24 07:09:11 -07:00
Eric House
340a559eb7 don't report fdroid builds as dirty
F-droid build system modifies git-controlled files so no build will ever
be clean. So look for a -P property and if that's set don't use the
--dirty flag when capturing the git revision. Requires a change to the
fdroid metadata to pass that property.
2017-05-24 06:49:09 -07:00
Eric House
222655ba58 get rid of background for expander buttons
In the gameslist view the expander buttons had a visible rectangular
background. Now that's transparent so they look like the rest.
2017-05-23 19:03:29 -07:00
Eric House
3c650ce762 fix xw4d build (shortening more xw4dbg) 2017-05-23 19:03:29 -07:00
Eric House
acf7097fda sign release apks outside of gradle
My sign-inside-gradle is an uncommon trick and unnecessary. Better to
follow the old convention of using jarsigner and zipalign.
2017-05-23 19:03:19 -07:00
Eric House
ef2da21bbe xw4dbg -> xw4d: tired of typing the extra letters
Rename the debug variant and make it work. appID stays the same and so
no longer matches. Gradle allows that.
2017-05-23 06:37:31 -07:00
Eric House
4ad7e171f6 keep db open throughout
Years back what I read said you opened and closed the database around
every query. Now I'm reading differently, that the OS will close it for
you on app shutdown and that it's ok to just leave it open. Trying
that after a few minutes on one device looks ok. Will need to test the
heck out of it, especially on older OS versions, before ship.
2017-05-18 21:20:21 -07:00
Eric House
8a4563e8ee up version strings 2017-05-18 06:53:03 -07:00
Eric House
a834a8170a catch IllegalStateException
Play store reports crashes but stack crawl doesn't tell me where
from. So try catching the exception and on debug builds logging what
dialog is responsible.
2017-05-18 06:37:58 -07:00
Eric House
7f4d8b1a44 remove firing assertion (per Play store)
Looks like clock skew or maybe even a timezone issue (I'm not doing
enough research :-) is causing an assert. Just drop the notification
instead.
2017-05-18 06:19:25 -07:00
Eric House
098de83b04 fix assertion: don't pass bundle as alert param
it's not serializable, and more's the point is already being saved
across rotations in the delegate, so just use that.
2017-05-09 07:02:12 -07:00
Eric House
a6d5f409cb include translations in changelog 2017-05-08 20:47:08 -07:00
Eric House
055f54611d catch NPE Play console reports thrown by OS
No clue why this might be happening, but perhaps catching and dropping
will prevent a bad user experience?
2017-05-07 17:06:26 -07:00
Eric House
c3bfbfb956 up version strings and changelog for release 2017-05-07 16:27:40 -07:00
Eric House
f8077785bc cleanup: remove comments and unnecessary ivar 2017-05-07 16:25:18 -07:00
Eric House
9b88279212 remove need for file
app_name.xml's contents are in generated file, so just use that. Saves a
change on each release.
2017-05-07 16:05:36 -07:00
Eric House
c637fd1eee remove not-again explanation for public rooms
When those became an advanced feature I added a warning for upgrading
players who'd miss them. That was long ago, and the warning was only
supposed to last a release or two.
2017-05-06 21:05:42 -07:00
Eric House
579a7ae5cb change emacs compile-command for java files (generated) 2017-05-06 20:59:17 -07:00
Eric House
3c2d36c5d4 Merge branch 'android_branch' into android_translate 2017-05-05 07:20:36 -07:00
Eric House
309622b592 put back a couple of words -- not dirty! 2017-05-05 06:48:52 -07:00
Eric House
252db56bba update English wordlists to bowdlerized 2017-05-04 22:48:15 -07:00
Eric House
8752432de3 add ability to filter out "dirty" words
If a Makefile defines a dirty word list then a new python script is
invoked to filter for and remove those words as the dict is being
built. So far I have for English only, which makes sense because only
English wordlists are built-in on Android and Google's rating system
cares only about what's built in.
2017-05-04 22:45:27 -07:00
Eric House
ed781b36b5 remove dismissDialog() and removeDialog()
One's a no-op the one place it was used, and the other's not used at all
2017-05-03 07:10:26 -07:00
Eric House
77a5d9c217 remove onConfigurationChanged(); no longer called
Removing from AndroidManifest meant the overridden method is no longer
called, so remove it and the code it calls.
2017-05-03 07:01:21 -07:00
Eric House
14dd3b4950 remove one-release-only explanation
Stuff explaining change only makes sense the first release after it's
added. So remove.
2017-05-03 06:53:39 -07:00
Eric House
c6d3870365 remove dead file 2017-05-03 06:51:16 -07:00
naofum
41f8072182 Translated using Weblate (Japanese)
Currently translated at 74.4% (549 of 737 strings)
2017-05-02 12:45:40 +02:00
Eric House
8588756556 fix assertion fail
It's legit for makeDialog() to fail when e.g. committing a turn while
board and chat are visible. So remove assertion.
2017-05-01 07:37:18 -07:00
Bernard Massot
2d3c8f799b Translated using Weblate (French)
Currently translated at 89.0% (656 of 737 strings)
2017-04-30 21:44:59 +02:00
Eric House
f18b3c61bf cleanup: get rid of old dialog stuff
showDialog() goes away except for PrefsActivity which can't do
fragments. Move stuff required by PrefsDelegate into it from
DelegateBase since no other subclasses does old-style Dialogs
any more. Remove a bunch of stuff from DlgDelegate, e.g. saving
state, that no longer gets used.
2017-04-27 21:37:48 -07:00
Eric House
a1c92b6957 cleanup from review of changes 2017-04-27 21:37:27 -07:00
Eric House
6caff930e7 Merge branch 'android_branch' into android_translate 2017-04-26 19:18:50 -07:00
Eric House
7a64b6066f Merge branch 'android_translate' of git://git.weblate.org/xwords into android_translate 2017-04-26 19:16:56 -07:00
Eric House
c3f0ed692c more useful log statement 2017-04-26 06:35:48 -07:00
Eric House
6fbb701dbe post from activityResult to avoid transaction error
Was getting crash with "Can not perform this action after
onSaveInstanceState". This lets the back stack get back into shape so it
can put up another alert.
2017-04-25 07:37:12 -07:00
Eric House
52ea395ad6 put invite/wait alert on back stack
Add to DldID the ability to specify whether dialog fragments bearing
that id go on the back stack. Set INVITE alerts (only) to use that
mechanism. Having them on the back stack seems to be required by their
buttons being hacked to not dismiss them, which in turn is required
because I want them to stick around underneath other alerts their
buttons launch.
2017-04-20 22:06:49 -07:00
Eric House
e12c303f0c fix NPE 2017-04-20 07:19:06 -07:00
Eric House
3dd5ac34fd don't [re]show rematch alert on rotation
on onCreate() test for bundle being null, and only in that case put up
the alert. Keeps it from piling up on rotations.
2017-04-19 21:24:00 -07:00
Eric House
97c459d708 fix format exception in logging 2017-04-19 07:15:21 -07:00
Eric House
22e0c9f1b1 fix assertion by running on ui thread
And since all calls to showDialogFragment do that now no need to wrap calls.
2017-04-18 07:48:52 -07:00
Eric House
2453de0128 consolidate dual-pane settings
Get rid of explicit enable-dualpane boolean pref, instead relying on the
three way default/force-phone/force-tablet pref. Offer to change that
rather than the former in BoardDelegate when run on upgrade. Move the
prefs setting from Debug to Appearance since it's "real" now.
2017-04-18 07:26:45 -07:00
Eric House
f88b438a81 get rid of configChanges altogether
Recent recommendations are not to attempt to handle it myself, so don't
and we'll see how it goes. And unify notions of tablet and enabling
dual-pane: a device that isn't dual-pane should not be using the new
single-activity stuff at all.
2017-04-18 06:47:53 -07:00
Eric House
269fceddf2 cleanup around posting alerts; skip back-stack
Had to disable use of the back-stack for DialogFragments, though that
means I can't prevent duplicates from stacking up (esp. in the
pathological robot-vs-robot case, but also just when I rotate the device
while a "rematch" alert is up.) The problem seems to be in dismiss
actions being handled too late. One easy-to-duplicate case is the
tile-picker. When it's enabled and you commit a turn I post first the
confirmation and then, in response to a "yes", the picker. But the
picker gets added to the stack moments before the confirmation is
removed, and it's the nature of stack removal that everything above
what's being removed gets pulled too. So you never see the
picker. Simply post()ing a runnable to put the picker up later fixes
this one case, but a similar trick doesn't work elsewhere, so I'm
punting until I have time to root-cause the problem.
2017-04-13 08:18:07 -07:00
Eric House
3bff16193a ignore more stuff 2017-04-13 08:05:56 -07:00
Eric House
5bbfd44333 try to dismiss duplicate alerts
Each alert gets a unique name. Add to backstack, and before doing so
look for another with the same name and dismiss it. This works most of
the time, especially to prevent them from piling up with orientation
changes. But in a robot-vs-robot game, and occasionally in a game with
three robots and one not, SCORE alerts stack up. It's the removal that's
failing, not the test for a duplicate, so perhaps I need to somehow wait
for it to succeed before adding the new alert.
2017-04-12 07:37:53 -07:00
Eric House
fdd1e5c148 fix NPE in new logging code 2017-04-10 20:33:25 -07:00
Eric House
cbac691be3 fix crash on old (2.3) devices
Was already using the safe test for wifidirect everywhere else...
2017-04-10 20:32:11 -07:00
Eric House
c774780730 don't display info about disabling when disabled 2017-04-10 06:56:09 -07:00
Eric House
6c5ab3ff1a tweak changelog order 2017-04-08 14:36:30 -07:00
Eric House
f33488f020 fix release builds
Gradle'd changed the name of one of the signing-related tasks.
2017-04-08 14:29:07 -07:00
Eric House
32c264cc16 cleanup: got confused by two separated hide tests 2017-04-08 14:09:34 -07:00
Eric House
0e90286d92 tweak tile-picker alert titles 2017-04-08 13:45:42 -07:00
Eric House
9e66d294a2 tap on pending blank tile brings up picker
It's been annoying to have to move a placed blank to change its
value. No more.
2017-04-08 13:44:59 -07:00
Eric House
832b3adfd2 cleanup; fail safely
Remove or fix some logging; in a case that rarely shows a NPE check
first but only assert on debug builds. Fail silently on release builds.
2017-04-08 13:15:24 -07:00
Eric House
4668beee78 reveal timer start field if timer's enabled
Rotation was hiding it once enabled.
2017-04-08 12:20:20 -07:00
Eric House
5b7559c223 debug-build-only logging of pane order
I'm seeing infrequent switching of panes' ordering when
rotating. Logging them hoping to see if it's in the layout or elsewhere.
2017-04-08 12:11:53 -07:00
Eric House
b07fd2699c remove incorrect assertion
DELETE_DICT Action is expected to flow through child, at least until I
fix to disable deleting a dict while it's open in the dict browser. It
may be confusing but with the assert gone does no harm.
2017-04-08 11:40:54 -07:00
Eric House
1f3d1cbb79 make force-tablet debug pref a three-way
Rather than force/don't, which doesn't let tablets force themselves to
be phones, allow choice between OS default and forcing either way.
2017-04-08 11:04:45 -07:00
Eric House
32140ff4e5 ignore generated files and build files 2017-04-08 11:04:23 -07:00
Eric House
7717272f68 Capitalize the W: Crosswords -> CrossWords
Too much confusion with crossword puzzle apps
2017-04-08 10:08:18 -07:00
Eric House
8ec48bfee8 fix typo 2017-04-08 09:26:09 -07:00
Eric House
ac932758b2 remove unused strings
fix script to search in new location and remove the strings it flags.
2017-04-07 00:58:59 -07:00
Eric House
d9944252f6 cleanup old dialog code
remove some old stuff from pre-dialogfragment dialog handling. What's
left still needs auditing, as I'm not sure whether it can get called.
2017-04-07 00:33:45 -07:00
Eric House
50fe363da9 move notice about new dual-pane feature
Make the default be that it's on, and move the new-feature notice from
app launch to board open, the point where most will see the feature for
the first time. Remove the notify-and-exit thing, which is harder to
make work from the board, instead just posting an alert, if user chooses
to disable, that the setting change takes effect after a restart.
2017-04-07 00:23:37 -07:00
Eric House
b40f938fcb fix dbg variant: remove duplicate from manifest 2017-04-06 21:11:55 -07:00
Eric House
55339b6aaf fix release compile warnings 2017-04-06 07:43:20 -07:00
Eric House
bbae0ab6ed up version strings
Easier to test dualpane upgrade notification with new version in place.

And remove version code from manifest, since it's duplicated in build.gradle.
2017-04-06 07:39:30 -07:00
Eric House
966c48bd57 fix build (forgot new file) 2017-03-28 21:45:03 -07:00
Eric House
c496cf5a1f include room name in games list when pending
I can't send a manual invitation without that information
2017-03-28 07:10:45 -07:00
Eric House
e7d4e93d12 Use Log.? instead of DbgUtils.log? everywhere
Too much trouble switching modes between work and home :-)
2017-03-28 06:54:42 -07:00
Eric House
059bf82392 redo invite/wait alert after invitation sent
Needs to show different text and buttons, so now that it isn't getting
dismissed and rebuilt every time a button's pressed force that process
manually the time it's required.
2017-03-27 07:20:32 -07:00
Eric House
a5d0d02faf pass Context fix NotSerializableException
Backgrounding with Wait/Invite alert up mean serializing something that
included a Context. Fix to pass it instead into methods that need it.
2017-03-27 07:16:13 -07:00
Eric House
e7a2657a91 override onResume not onStart to fix NPE
When game's resumed (brought from background) and Wait alert is up
onStart() is called before getDialog() has a non-null value to
return. onResume() is the place to modify the dialog.
2017-03-27 07:07:05 -07:00
Eric House
58e5145296 another try: make AlertDialog not exit from buttons
Rewrote Wait/Invite alert to use new functionality that allows it to set
its AlertDialog buttons to not exit when tapped. Turns out things are
much simpler when I don't have to hook into all the places my dialog
might need to be put up again.
2017-03-24 19:58:28 -07:00
Eric House
265818725c improve (fix?) invite/wait dialog
Override onCancel() in order to finish when the alert's closed via the
back button. Count the number of alerts and when it drops to 0 (when all
the alerts launched from the invite/wait dialog are gone) put the
invite/wait up again.
2017-03-23 08:45:47 -07:00
Eric House
d9a4783e32 fix NPE
On Nexus 5x rotation with Invite/Wait alert up confuses things, and
eventually gets a NPE. This fixes that, but I still need to fix the
other.
2017-03-21 20:56:37 -07:00
Eric House
26d96136d8 do away with different picker layout for land
Five columns works on both orientation. Six doesn't in landscape. The OS
doesn't let the alerts get all that much wider in that orientation.
2017-03-21 20:44:31 -07:00
Eric House
94a3b22266 rotation hack: dismiss alert before replacing it
I can't figure out how to prevent rotation from duplicating the wait
alert, and don't have the ability to have makeDialog() return null, so
when that happens -- when a second is being created -- dismiss the first
first. And clean up some callbacks made unnecessary by onDismiss().
2017-03-21 20:44:30 -07:00
Eric House
e3c0419e91 fix so unconnected game is never without an alert up
Try to track in local saved state enough, including a count of
sub-alerts the main Invite alert has put up, whether when something's
dismissed the alert should go back up or the game should be
closed (which is the right thing to do when the back button's pressed.)
Hack: setting a variable to null in onSaveInstanceState() then testing
it in an onDismiss() call that happens as part of rotation avoids an
exception when rotation the phone.
2017-03-21 20:44:02 -07:00
Eric House
0467121d3a move saved-state variables into Serializable POJO 2017-03-17 07:30:05 -07:00
Eric House
1ed30c79d0 fix crashing move-games alert
Move most state that needs to be saved in Bundle into a single
Serializable class so adding new is easier. Add to that the current
selected group so we don't crash when nothing's been set. (I think in
the move to DialogFragments I lost the code that would have disabled the
Move button. That's back.)
2017-03-16 21:14:53 -07:00
Eric House
19bfcfc3a2 call super.onSaveInstanceState() last
Move call to end of derived class' method. This may very well be the
solution to a bunch of random crashes logging
"java.lang.IllegalStateException: Can not perform this action after
onSaveInstanceState". Chief suspect is the change in XWActivity.java,
but I'm making it everywhere for consistency's sake: it's a good habit
to get into.
2017-03-15 19:38:57 -07:00
Eric House
df8ebaec06 use six-button bar for landscape orientation 2017-03-15 19:35:49 -07:00
Eric House
006bf2e387 hide pick-face-up checkbox for networked games
And tweak game-config layout
2017-03-15 07:25:54 -07:00
Eric House
4c9c5b3418 tweak picker; fix no-tiles-left case
Minor changes to strings and code for tile picker, and fix bug where
server.c was asking for 0 tiles (because none are left in pool.)
2017-03-15 07:12:40 -07:00
Eric House
364eec3c5c tweak picker layout 2017-03-14 19:55:49 -07:00
Eric House
fc438a4bcf tweaks to tile picker
Fix to auto-exit for blank- but not tray-picking and to not show Del
button for blank case (dumb since we're exiting anyway.)
2017-03-14 19:47:45 -07:00
Eric House
58fc0e9b81 snapshot on the way to working tile picker
New classes implement custom alert and its view, where most of the logic
for putting up one button per tile, hiding and showing buttons based on
what's left, etc. lives. Rough, but works well until rotated, when gets
redrawn without spaces for the buttons that could come back.
2017-03-14 07:23:30 -07:00
Eric House
a804983b8e fix makeIntArray to work for non-32-bit array sources 2017-03-13 19:32:20 -07:00
Eric House
aa4d7e3d97 remove blocking alert stuff
The crazy hack to get around Android's lack of modal dialogs is at long
last gone. Remove semaphore and code that uses it. Will leave the
background thread in place, at least for now, as removing it would be a
huge change.
2017-03-10 08:48:37 -08:00
Eric House
1cd863b877 fix assertion around out-of-order tile assignment
Got a crash opening games where tile pick was on and first player was a
robot. Cause: non-robot player's tiles were being assigned before the
robot's, and the move stack didn't like the out-of-order assignments.
Now we assign tiles in order as before, but pause each time we find a
non-robot that needs to pick its own.
2017-03-09 21:40:19 -08:00
Eric House
6e5973c55b toward making tile picking work through rotations
Make face-up tile picker util method return void and add mechanism for
passing in selected tiles asynchronously, as has been done recently with
the rest of the once-blocking util callbacks. Works perfectly in the gtk
case. Likely crashes in curses (if picking face-up option is on.) In
java all the callbacks are there but rather than put up a UI we pretend
the user says "pick 'em for me" each time. Putting up a UI is next.
2017-03-09 20:36:14 -08:00
Eric House
70b3aaa263 modify function to be more useful 2017-03-09 19:35:07 -08:00
Eric House
618f9cf20a toward rotation-safe invite dialog
Rewrite the overly-complex invite dialog that's posted when a game opens
and is missing players so that it doesn't crash after an orientation
change. It's still possible to dismiss it yet have the game stay open.
The goal is that a game in that state always has a dialog on top of it
so you don't get confused about e.g. why you don't have tiles, but
there's more work to be done there.

Also added a common superclass for all my DialogFragments. It may be
useful e.g. for having each DelegateBase instance able to track what
dialogs it currently has up, e.g. to have a policy about how many of the
same class can be live. I'm thinking here of how to prevent a
robot-vs-robot game from ending with a stack of 25 move reports. (The
change here is that the old activity.showDialog(int) only allowed one at
a time, and some of my logic takes that for granted.)
2017-03-07 07:48:46 -08:00
Eric House
0980bcfbe5 fix another class cast exception
But this is by inspection and, involving a dialog that is no longer
posted, could probably never occur.
2017-03-07 07:35:16 -08:00
Eric House
9211d6b765 fix class cast exception
Problem with subverting type checking is compile time errors become
runtime...
2017-03-07 07:08:48 -08:00
Eric House
83f7a9cec1 fix dismissal of invite/wait alert
There were multiple places launching it, which in a DialogFragment
world (in the absence of other per-dlg-id controls) means stacked
multiple alerts. And dismissDialog() didn't work. So use a boolean to
prevent more than one being posted and keep a reference to the
DialogFragment behind it in order to be able to call dismiss() on
it. That's the only place I was calling dismissDialog() (other
than the tile-picking stuff which has to be rewritten anyway) so this
little hack is probably ok.

This alert still gets messed up with the screen config changes. Fixing
that is next.
2017-03-01 07:23:50 -08:00
Eric House
5e23d6fc75 remove unused variable 2017-03-01 06:14:35 -08:00
Eric House
05d583a324 fix timers: don't clear in snapshot case
Back in August I "fixed" timers running after the board was cleared but
didn't realize that util contexts were shared by snapshot
boards. Clearing those timers when the board's destroyed was stopping
timers for a visible board as well. So I added a boolean indicating
whether to clear timers. Ref counting or similar would be better, but a
lot of work given the concept isn't really in the common/ code at
all (outside of dicts...)
2017-02-27 20:20:25 -08:00
Eric House
b849ad4db3 Merge branch 'android_branch' into rotation_fix 2017-02-27 18:49:57 -08:00
Eric House
d865812002 failing to find an .apk is not an error 2017-02-27 18:31:17 -08:00
Eric House
19a7b7e146 fix assertion: we do handle that case 2017-02-24 09:12:11 -08:00
Eric House
48bd5d7f1d fix posting of dialogfragments from preferences
I can't get preference fragments working in my world (mostly because
nested PreferenceScreens don't open when clicked on and the workarounds
for that are too complex) so next best thing is to fix alerts to work on
top of prefs activity. That involves creating a new transparent activity
that subclasses XWActivity and has a DelegateBase subclass. Launching an
alert is then just a matter of passing DlgState into the new activity
via an Intent, at which point everything Just Works. Button clicks are
returned via an intent as well.
2017-02-24 08:56:31 -08:00
Eric House
ff99e89e9d fix compiler warning 2017-02-22 22:39:32 -08:00
Eric House
70a99b39fb remove dictGone dialog
There's no way to get it invoked. I think that's a bug, but when it
comes back it'll come back in different form.
2017-02-22 22:35:19 -08:00
Eric House
2a4bce4ad1 remove Context ivar from CurGameInfo
It claimed to be Serializable but wasn't: Crash. Now it is.
2017-02-22 22:29:02 -08:00
Eric House
1de838171b make sms enabling alert dialog-fragment-based 2017-02-22 22:11:24 -08:00
Eric House
56dfef828d move launch into PrefsDelegate
Following pattern for most, though may never have dual-pane option.
2017-02-22 07:46:14 -08:00
Eric House
cfd467f7d6 fix class-cast exception 2017-02-21 21:35:35 -08:00
Bernard Massot
c0c2527258 Translated using Weblate (French)
Currently translated at 99.3% (765 of 770 strings)
2017-02-21 12:44:53 +01:00
Eric House
c271202faa make bad phonies alert non-blocking
Continue conversion of alerts that required blocking the JNI thread. Now
board_commitTurn() takes a second boolean indicating whether phonies
found have been approved by user. Common code informs user, and if he
approves client code calls board_commitTurn() again. In case where
turn's lost there's no call to make back, but there's the undesirable
change that if a robot moves next its move will be reported on top of
the turn-lost alert. Ideally new alerts would appear under, not on top
of, those that have not yet been dismissed.
2017-02-20 07:20:19 -08:00
Eric House
42aef7b85c add UI to set phoniesAction creating new gtk games 2017-02-19 15:05:40 -08:00
naofum
ba780692e6 Translated using Weblate (Japanese)
Currently translated at 100.0% (770 of 770 strings)
2017-02-19 12:34:43 +01:00
Weblate
380ae5bf1f Merge remote-tracking branch 'origin/android_translate' into android_translate 2017-02-19 06:39:12 +01:00
Eric House
81d428a16d fix crash by adding missing param 2017-02-18 19:20:14 -08:00
Eric House
5f12d1a03b assign faces to blanks asynchronously
Next step in converting util_ methods that required blocking: blank tile
assignment. Now post a query and add a method that the client code can
call when the user's decided. Include enough state (col, row, and
playerNum) so that it's probably pretty safe.
2017-02-18 19:16:32 -08:00
Eric House
ca6edcfc9a make trade and move confirm non-blocking
Probably breaks curses build, but for gtk and Android
turn move and trade confirmation into a two-step process, making
board_commitTurn() non-interactive when called with a second
parameter. The old blocking util methods now return void and it's up to
the client code to interact (on the main thread) then re-call
board_commitTurn() if appropriate.
2017-02-17 08:58:20 -08:00
Eric House
1f2f4506c4 remove unused query option. Less to convert. 2017-02-17 06:30:54 -08:00
Eric House
2a0b21e5e8 make password fetching non-blocking
First attempt to stop blocking the jni thread: instead of returning a
password from a util_ method, have it include enough state that the UI
can return, put up a dialog, and then pass that state and the password
back and have them matched up again. I think this will work for the
remaining blocking Alerts too.
2017-02-17 06:23:44 -08:00
Joan Montané
081fa7b0f3 Translated using Weblate (Catalan)
Currently translated at 92.9% (714 of 768 strings)
2017-02-17 09:44:16 +01:00
Eric House
4d5278704e symlink changed! 2017-02-16 19:05:34 -08:00
Eric House
c088e36113 fix crash; use params
Pass blank-picking params through rather than using instance variables.
2017-02-16 07:59:10 -08:00
Eric House
e631d57e9b convert remaining DelegateBase Alerts
Includes a hack in DBAlert that's required I think because
GameConfigDelegate is launched "for result". onCreateDialog() always
fails after a rotation the first time because GameConfigDelegate isn't
there to have its makeDialog() dispatched to. So it puts up a dummy
alert and then post()s code that is successful in calling makeDialog()
to get an alert from GameConfigDelegate that can replace the
dummy. Nothing shows on the screen on simulator anyway.

The major problem remaining is that blocking alerts in BoardDelegate are
recreated after rotation but the thread that was blocking has been freed
so nothing can be done after the new alert returns. E.g. blank tile
picker will be posted again, user will pick a tile, but the common
code's not in a state to do anything with that choice (which cannot even
be "returned.") Options are to find a way to make the JNIThread survive
the configuration change without unblocking or to rewrite all the common
code to not expect return values from util_ methods.

This commit is not well tested, and diffs don't allow a thorough check
of the conversion of each DlgID type.
2017-02-16 07:25:20 -08:00
Eric House
13adebdc51 support alert onDismiss listener
New way of adding onDismiss listener to DialogFragment-based alerts
required API change to DBAlert and the makeDialog() method.  Fixes
customizing default player name.
2017-02-15 07:28:39 -08:00
Eric House
f5c022bb72 move show(DialogFragment) to XWActivity
First of probably many bugs running new alert changes in
non-dualpane-mode: Activities get to show dialogs too!
2017-02-15 06:44:01 -08:00
Eric House
8e874fa45c fix dispatch of extra actions
Had left out dispatch of "negative" buttons populated from an
ActionPair. Tested for offer to remove redundant new game buttons at
bottom of games list.
2017-02-15 06:37:25 -08:00
Eric House
a526ec6529 new gradle version (recommended by AS) 2017-02-15 06:35:23 -08:00
Eric House
507f6001fa convert another to DialogFragment 2017-02-13 06:09:25 -08:00
Eric House
07da48db73 replace activity.show(dlgID) with fragment-based
For GamesListDelegate only so far, replace calling <activity>.show(int)
to launch an Alert with something producing and showing a
DialogFragment. Replaces passing and saving state inside the
DelegateBase subclass with saving it as part of the fragment's bundle,
and it looks as if a single class will work for nearly all of the alerts
managed by DelegateBase.{onCreateDialog,prepareDialog}(), which will
eventually go away. The beauty is that the implementations of
onCreateDialog and onPrepareDialog remain, but as the body of a new
makeDialog() that's called by the fragment's onCreateView. Less code
changes, but now it's all called every time an alert's created.
2017-02-12 15:33:35 -08:00
Eric House
c66764bd77 make lookup alert fragment-based 2017-02-10 08:41:28 -08:00
Eric House
b69eb30e9c use the recommended pattern for DialogFragment construction
Empty constructors only...
2017-02-10 07:17:53 -08:00
Eric House
8c92f2012e file/class name change 2017-02-10 06:40:56 -08:00
Eric House
92e150bb1e convert confirmThen alert 2017-02-10 06:00:26 -08:00
Eric House
c9bc7b6c49 convert ok-only dialog to fragments 2017-02-10 05:47:17 -08:00
Eric House
a724ef734f add forgotten file 2017-02-10 05:40:18 -08:00
Eric House
e69824ece0 remove Runnable from DlgState
Can't be serializing Runnables, so replace with an Action that's sent
via onPosButton.
2017-02-09 09:08:03 -08:00
Eric House
470ee6eaa4 rebase invite choices alert on fragments
And create a common superclass for alerts coming out of DlgDelegate
2017-02-09 08:14:44 -08:00
Eric House
7c39bf6064 call via activity in common case too 2017-02-09 06:41:38 -08:00
Eric House
939688e3cd change DlgClickNotify methods to return boolean
So dispatching over possible targets can stop when one has handled it.
2017-02-09 06:23:41 -08:00
Eric House
796192380f switch not-again alerts to being fragments
Since associated DlgDelegate instance doesn't survive a rotation, needed
to pipe results through a DlgClickNotify implementation on XWActivity
that then dispatches in the DualpaneDelegate case to all visible
fragments. I hope this turns out to work for all DlgClickNotify
implementations as I switch them over. We'll see.
2017-02-09 06:19:37 -08:00
Eric House
e863cc1a4b experimental on-device log-saving script
Add script that when copied to device and run from 'adb shell' captures
all app and OS logs to file. Next: add code to XWApp.java to copy it
from assets/ and run it on launch.
2017-02-08 07:01:38 -08:00
Eric House
b1f095b56e prevent loading of WiDirService on older android
On 2.3 anyway there's a java.lang.VerifyError trying to load that
class. So wrap the loading in a new class that catches the error and
sets a boolean so subsequent calls don't need it. There are other calls
that could load the class, but they may not be reachable. To be tested.
2017-02-08 06:33:06 -08:00
Eric House
683eb8e14b don't remove alerts in onStop()
Required to fix alerts going away now that orientations are handled by
the OS (which in turn is the preferred way to do things now since not
ALL config changes CAN be handled by the OS.) With this change some
alerts will probably cause crashes during a rotation. Those all need to
be fixed.
2017-02-07 07:04:27 -08:00
Eric House
0e23c191b5 convert About alert to DialogFragment
As a first experiment. Untested on non-dualpane and on older OS
versions.
2017-02-07 07:02:16 -08:00
Eric House
121c35b728 don't expect View to survive a rotation 2017-02-06 19:18:15 -08:00
Eric House
69eee734e2 cleanup: switch on ids rather than test views 2017-02-04 10:28:23 -08:00
Eric House
99664a8360 persist game config state across rotations
Make CurGameInfo serializable, make sure it's updated in onPause, and
then just add it to the bundle. Easy.
2017-02-04 10:12:34 -08:00
Eric House
b050ac5d62 update studylist display when words added
Add listener interface to DBUtils and hook StudyListDelegate into it so
that if a word is added while the list is being displayed the new word
shows up immediately.
2017-02-04 09:40:01 -08:00
Eric House
6eb4a9b09b preserve studylist selection across rotation
As elsewhere, convert to a serializable representation and save it in
instance state.
2017-02-04 09:00:40 -08:00
Eric House
6b565e2fa7 cleanup: remove some logging 2017-02-04 08:53:07 -08:00
Eric House
6270a81bfa config changes to build on different system 2017-02-04 08:12:40 -08:00
Eric House
b0cef99507 preserve wordlist selection and remote info
wordlist browser selection and downloaded info about downloadable
wordlists didn't survive rotation. They do now, the latter as a huge
serialized array. To make selection work I save the keySet() of a
mapping of selected names to the views that represent them. Now the
presence of a key, even if the value is (temporarily) null, signals that
something's selected.
2017-02-02 21:08:22 -08:00
Eric House
3ae2b41ae2 save selected games/groups across rotations 2017-02-01 06:08:33 -08:00
Eric House
ca4b3fd454 fix crash when starting in non-dualpane mode 2017-01-31 21:04:17 -08:00
Eric House
b874d25563 fix iterating over fragments
Old code that didn't rotate properly was meant to associate view IDs
with fragments so I could iterate over them, e.g. to dispatch
intents. To replace that the common superclass of all fragments now
keeps a set of active ones and provides a method that uses that to find
the fragment that owns a view. So I can iterate over fragments based on
the dualcontainer-contained views as before.
2017-01-31 19:46:51 -08:00
Eric House
0fedcf56ab fix remaining fragment view layouts
The layout_width="1" thing is critical!
2017-01-31 08:03:13 -08:00
Eric House
352508b852 start fixing problems with dual-pane
Remove the generated FrameLayout that was breaking restoration after a
config change. Set layout_weight=1 for all fragment root views so they
get half the screen in landscape mode. Remove some code. Problems
remain, first among them that notification intents aren't dispatched correctly.
2017-01-31 07:01:11 -08:00
Eric House
f9cc524028 remove configChanges for MainActivity
Makes it so simply rotating duplicates the grey-screen GamesList problem.
2017-01-28 11:03:33 -08:00
Eric House
afb0c1d3ee disable move when all games already there
When all selected games are starting in the same group and that group is
selected as the move destination, disable the move button.
2017-01-24 07:55:09 -08:00
Eric House
b8e8c176ed don't open group just because added game
A group that's closed stays closed even if a game's added to it. The
change flushed out a bug where the groups cache wasn't being invalided
on a game move, so fix that too.
2017-01-24 06:53:54 -08:00
Bernard Massot
c4e451a768 Translated using Weblate (French)
Currently translated at 99.2% (762 of 768 strings)
2017-01-23 15:44:49 +01:00
Eric House
9cab7d916c fix strings update server file requires
Name file and set internal constant sent to server to use same git rev
string so that the script will correctly identify whether the version I
have is the latest it has available. Fixes server offering to replace
with what I already have.
2017-01-22 16:22:35 -08:00
Eric House
929c4c811b tweak gradle-built apk name 2017-01-22 15:55:31 -08:00
Eric House
83fed4da91 include debug keystore directly
replace symlink silliness ant required with gradle commands to sign
debug builds with the checked-in (local file) debug keystore. Make
it possible for an environment variable to override in case somebody
wants to use his own.
2017-01-22 15:35:02 -08:00
Eric House
15d0f88187 add preference to disable wifi direct
Looks like there are battery drainage issues with the current half-done
implementation, so add option to turn it off. Only takes effect on
restart, and only matters on dbg variant now since it's compile-time
disabled on the main variant.

Also add discovery machine state to ConnState printout, stop running the
machine over and over (likely the battery problem), but add ability to
restart it triggered by the ConnState's "reconnect" button.

Also start persisting the most recently seen set of peers. If service
discovery and not connecting is the problem having these available to
try to connect to on startup might help.
2017-01-22 14:51:21 -08:00
Eric House
b96d44393a add and use boolToStr
Just to make log messages a bit more helpful. Should be no behavior
change, and no change in code generated in release builds.
2017-01-22 14:15:29 -08:00
Eric House
4a93281a2d enable wifidirect in xw4dbg variant
As it was before.... Also log rather than assert a common widir packet
forwarding error.
2017-01-20 07:56:03 -08:00
naofum
704661180d Translated using Weblate (Japanese)
Currently translated at 100.0% (768 of 768 strings)
2017-01-20 15:05:05 +01:00
Eric House
2053b234fa print less during builds 2017-01-19 19:05:10 -08:00
Eric House
eb13ea4291 add the upside-down icons for -dbg flavor 2017-01-19 08:36:27 -08:00
Eric House
9c142dd6e7 add cleanNDK task and separate jnilib dirs
Build different jni code (into different obj and libs directories) for
the different release/debug and xw4/xw4dbg combinations. This works when
only one build is done, but when doing two some later task tries to put
both multiple same-named libraries into the .apk and so fails. I still
think it's worth adding this to keep from using the wrong binary, but
that needs to be fixed.

cleanNDK just nukes all the directories. Easier than invoking build-ndk
clean...
2017-01-19 08:10:16 -08:00
Eric House
43e8c3ea64 fix release script errors and that running it finds 2017-01-19 06:22:24 -08:00
Eric House
f5ebee89da fix duplicate permissions
Merging of AndroidManifest.xml files meant the dbg flavor was getting
its C2D_MESSAGE permission and the main flavor's, which on recent OS
versions meant it couldn't be installed. Use substitution from gradle to
fix.
2017-01-19 06:22:12 -08:00
Eric House
995da3a0b2 remove last from old directories 2017-01-18 19:44:17 -08:00
Eric House
ea3a8b4034 include relay hostname in debug conn status 2017-01-18 19:30:03 -08:00
Eric House
22ca219347 Merge branch 'android_json' into android_branch
Accidentally did a bunch of gradle work on the wrong branch, but it's a
trivial merge as I hadn't done anything else with it yet.
2017-01-18 19:25:58 -08:00
Eric House
8ade997e8c remove the rest of XWords4-dbg 2017-01-18 19:24:59 -08:00
Eric House
9eed2ca608 auto-update emacs compile-command to use gradle 2017-01-18 19:22:32 -08:00
Eric House
1f5ffaa712 more cleanup. Get Crittercism stuff compiling. 2017-01-18 19:03:36 -08:00
Eric House
0d1e22fc83 move wordlists and other assets over 2017-01-18 08:47:33 -08:00
Eric House
aaf153006e move and incorporate localized strings
This will require a reconfig on the weblate side!
2017-01-18 08:44:23 -08:00
Eric House
3ac0039b4d fix jni build. Full .apk now produced.
But it gets confused about downloading wordlists.
2017-01-18 08:33:49 -08:00
Eric House
0750a771c3 move java files and get them to compile 2017-01-18 08:27:48 -08:00
Eric House
f090e86e26 move res files 2017-01-18 07:34:32 -08:00
Eric House
fcdb66eb87 forgot a file 2017-01-18 07:28:19 -08:00
Eric House
49242f78cf more script fixes; move jni code 2017-01-18 07:27:23 -08:00
Eric House
ad5d451ef3 fix image generation 2017-01-18 07:15:08 -08:00
Eric House
451e9e04ab fix path in script 2017-01-18 07:05:18 -08:00
Eric House
612ff0259c move and start processing res .xml files 2017-01-18 07:01:25 -08:00
Eric House
975d114f41 move some gradle files 2017-01-18 06:33:00 -08:00
Eric House
26b4c7da8e log values showing up in the occasional crash 2017-01-09 20:55:14 -08:00
Eric House
084a45296e invalidate menu when board destroyed; shorten rematch name
GamesList menu was in a bad state after a game closed because hadn't
been rebuilt. It's simplest to invalidate it surgically, when the
BoardDelegate notifies that the board's closed, though doing in in
onWindowFocusChanged() might catch more edge cases. We'll see. I want a
low-risk impact right now.
2017-01-09 07:04:58 -08:00
Eric House
8c680b50f7 fix mystery crash on my phone
but not on emulator running same OS version (or close). And in spite of
an exception being thrown the work being done, hiding a preference,
still succeeds. Whatever.
2017-01-08 14:40:18 -08:00
Eric House
fac8c2b943 resend all pending SMS messages on getting permission
Fixes case where user has received invitations but not allowed SMS then
decides to do so. It's a hack giving Perms23 class knowledge of how to
send moves etc. Instead I should be letting interested parties register
for perms-granted events, but that can happen later, and is less
valueable while SMS is the only "dangerous" permission and the only one
that blocks message sends.
2017-01-08 14:23:23 -08:00
Eric House
f41b77b8ee fix conversion of contacts from old format
JSONObject(<string>, null) clears out any existing entry but doesn't add
a new one. So store missing names as "" instead. Not sure how this
worked when I first tested it....
2017-01-08 13:26:29 -08:00
Eric House
8349ffc126 tweak changelog 2017-01-08 13:02:44 -08:00
Eric House
a0fffb3af6 get rid of SMS enabling on Marshmallow and later
My old asking for permission to turn on/off SMS is confusing and adds no
value when the OS separates out permissions and is confusing. So get rid
of it on Marshmallow and later, always returning true from the old API
and hiding the preference in that case.
2017-01-08 12:58:57 -08:00
Eric House
b0105888d0 sort current turn games with oldest at top 2017-01-07 16:20:15 -08:00
Eric House
449860a880 make Dbg variant's icons upside down
The write-red-on-it thing doesn't work for the notify.png file used in
notifications (I think because I can't find a color Android doesn't
strip out.) So use a rotation transform instead. Users will never see
this anyway.
2017-01-07 14:48:31 -08:00
Eric House
4f30a5be71 Merge remote-tracking branch 'weblate/android_translate' into android_branch 2017-01-07 13:15:16 -08:00
Eric House
e842e1a744 use tryGetPerms to replace a bunch of Perms23 crud -- again 2 2017-01-07 12:55:45 -08:00
Eric House
734549668c use tryGetPerms to replace a bunch of Perms23 crud -- again 2017-01-07 12:45:26 -08:00
Eric House
a453676456 use tryGetPerms to replace a bunch of Perms23 crud
This one required allowing passing in a string rather than a res id.
2017-01-07 12:16:59 -08:00
Eric House
6203012db6 use the utility for contacts permission 2017-01-07 10:55:21 -08:00
Eric House
ee81e3e6cc tweak permissions again
Move connection options READ_PHONE_STATE check from ConnViaViewLayout to
GameConfigDelegate and give it a rationale. Preferences stuff can't do
permissions because it can't override onRequestPermissionsResult (base
activity is of wrong class). Should fix that at some point, either by
moving to preference fragments or with a dummy activity to go over the
top.
2017-01-07 10:21:41 -08:00
Eric House
558a20f2db more tweaks around SMS permission
Explicit "ask again" and "skip" buttons in alert showing rationale;
check/ask for permission before sending invitation via SMS; warn each
time SMS-enabled game is opened without permission but allow it to stay
open and if necessary send an invitation.
2017-01-07 08:38:48 -08:00
Eric House
b898637666 close game that has no way to connect
add "close game" button to warning about lack of comms, and do that on
dismiss too. Nothing good can come from having the thing stay open.

Eventually the "close" should turn into "edit" and launch GameConfig on
the game with the comms selector up, but that's hard, as currently the
launch only happens from GamesList and is via
startActivityForResult. Might be easiest to close and send an intent to
GamesList to cause it to launch GameConfig that way. Not for this release.
2017-01-07 07:44:53 -08:00
Eric House
8bf65622b5 fix crash duplicating no-address network game
An edge case, but: doing "new from" on a game without any connection
types crashed because of an assertion in comms that assumed
addr_setType() was being called on zero-initialized flags, which
shouldn't have been a requirement. Pulled that as well as java code that
added RELAY-type connectivity to any game that had none. If a game has
none, leave it that way.
2017-01-07 07:41:38 -08:00
Eric House
86e7142687 split DlgDelegate interface in three
replace dlgButtonClicked() with separate methods for positive and
negative buttons and alert dismissal. I was making too many mistakes
because the old method was getting called twice (e.g. for negative and
then dismissal) and I hadn't needed to differentiate until adding that
new Action. There should be no behavior change with this, but it's
pervasive and replaces some spaghetti.
2017-01-06 07:07:17 -08:00
Andreas Kleinert
6bce7ea64d Translated using Weblate (German)
Currently translated at 8.5% (64 of 746 strings)
2017-01-05 21:44:57 +01:00
Eric House
dc7ed9bfb2 use new utility method 2017-01-05 07:42:21 -08:00
Eric House
46f69607c5 log class in XWFragment lifecycle methods 2017-01-05 07:39:06 -08:00
Eric House
d661f1d050 add another perms request/rationale 2017-01-04 07:10:45 -08:00
Eric House
7c033ccdf1 warn when unpermitted choice made
Let OS ask for STORAGE when user chooses Downloads dict storage option,
but do nothing if it's not granted. Existing code asks again when the
actual move is to done.
2017-01-04 06:46:44 -08:00
Eric House
2eaa3b82e7 inval dicts availability cache when permission changes
Along with cacheing what dicts are where cache the state of STORAGE
permission when the cache was made. If it's changed, invalidate the
cache.
2017-01-03 21:24:42 -08:00
Eric House
b505de5833 don't crash when STORAGE taken away mid-game
If an game's open that uses a wordlist kept in Downloads and permission
is revoked, close cleanly. On re-opening the user will be prompted by
existing code to download again. (Note: not prompted to turn STORAGE
permission back on. It would't be easy to detect that case, and I'm not
spending time helping people who are perverse.)
2017-01-03 21:15:08 -08:00
Eric House
9349e06747 perms: new utility to manage request flow
Add new static method that takes a request, rationale and Action, offers
the rationale if required and then, if user hasn't cancelled, asks for
permission. Eventually the Action is issued with either POSITIVE or
NEGATIVE. Use this to ask for STORAGE when downloading upgrades and
moving wordlists to the downloads area.
2017-01-03 07:25:12 -08:00
Eric House
4f2c67c331 up copyright for new year!!! 2017-01-03 07:11:06 -08:00
Eric House
59c80f8277 add special title to permissions rationale alerts 2016-12-31 16:27:17 -08:00
Eric House
8c7e1646fa get permission before downloading
Trying to download an update, and likely a wordlist, fails if STORAGE
permission isn't acquired first.
2016-12-31 15:56:24 -08:00
Eric House
503ea46ca5 fix crash rematching SMS without PHONE permission
You need PHONE permission to start and play an SMS game but not to have
started it in response to an invitation. But to rematch you need it. So
ask, including offering a rationale that differs depending on whether
there's a way for the game to communicate once SMS is removed.
2016-12-31 15:05:39 -08:00
Eric House
a24b3396b3 save rematch info across orientation changes
(and the os restarting us because a permission was changed while we're in
background.)
2016-12-31 14:31:20 -08:00
Eric House
6a363dbbd7 up revision number; new release required 2016-12-31 14:21:32 -08:00
Eric House
4990d31eda fix assertion on emulator 2016-12-31 14:21:00 -08:00
Eric House
f88ac1a9d0 another changelog tweak 2016-12-30 20:38:24 -08:00
Eric House
5260c3de90 catch -dbg build up with SDK 23 2016-12-30 20:12:23 -08:00
Eric House
250f4b0139 get rid of raw-string toast error messages
They were hacks for debugging SMS early on, probably infrequently
seen. Instead post messages. BUT: they aren't being received because of
how listeners get cleared in onPause(). Needs to be fixed, but there's
no harm in having them dangle for now.
2016-12-30 20:11:02 -08:00
Eric House
62aabc8cbc replace %{d,s} in german strings 2016-12-30 19:44:41 -08:00
Eric House
04a39f9251 force re-layout of board when toolbar populated
Sometimes when a new game is created the board winds up with the toolbar
drawn over the tray. That's because when it was laid out the game wasn't
running yet and so none of the toolbar buttons was enabled, giving the
toolbar a height of 0. So now the first time the updated toolbar reports
that at least one button is enabled we force the board to lay itself out
again.
2016-12-30 13:53:18 -08:00
Eric House
f488e727f8 fix invitations!
Little hack to dismiss a game when the invitations dialog was cancelled
broke invitations altogether. Revert that change, and simply check on
getting focus whether all players are present; if they're not, put up
the "invite or wait" dialog. This is a big change, but in 10 minutes of
testing I can't get the wrong thing to happen.
2016-12-30 13:09:51 -08:00
Eric House
ee042ff3cd better test for GSM phone
This one doesn't think a wifi-only tablet can send SMS messages.
2016-12-30 11:40:15 -08:00
Eric House
e5166a62e8 tweak string 2016-12-30 11:02:04 -08:00
Eric House
39828bfaf8 fix problems with localized files
Remove strings that no longer exist in English, add missing "other"
quantities in Japanese (taking a guess from context that it's ok to use
generic counters), and in a couple of languages fix typos in format
specifiers that would have caused crashes.
2016-12-30 11:01:51 -08:00
Eric House
fea31e9e3b fix script checking localized strings
It wasn't even checking all languages. Now it does, lets you specify
which ones if a subset's desired, and differentiates between sets of
format specifiers mismatching in a way that'll cause a
crash (e.g. expecting int in one and string in another) and just having
some missing.
2016-12-30 09:57:33 -08:00
Eric House
83fbbdc3ee fix compile-time warning
Flag has a different name in clang. Debug-only, so no risk.
2016-12-30 06:49:52 -08:00
Eric House
096fff1f4c Merge branch 'android_translate' into android_release 2016-12-30 06:49:06 -08:00
Eric House
f5db80e43f Merge android_translate
merge remote-tracking branch 'weblate/android_translate' into
android_translate
2016-12-30 06:42:14 -08:00
Eric House
7b30a0229a add button to launch BT settings
Let's make it easier to add to the set of available BT devices from the
place where the user sees the need. TODO: update the descriptive text,
but not this release since it'll break existing localizations.
2016-12-30 06:35:45 -08:00
Eric House
74d1967f23 cleanup from code review
Mostly removing TAG where isn't being used in the file, but other tweaks
too, none of which changes executed code.
2016-12-29 21:07:00 -08:00
Eric House
4cdc917cf5 tweak changelog 2016-12-29 17:27:33 -08:00
Eric House
c0784fe8b7 fix crash on Android 2.3
Channel wasn't a thing back then. Catch the ClassNotFound exception and
set the same boolean as when permissions aren't available (in manifest),
which means nothing else tries to run.
2016-12-29 17:17:27 -08:00
Eric House
531f30aae8 cleanup: use import more for new class 2016-12-28 13:52:04 -08:00
Eric House
497567ac2d check items newly imported from contacts
I figure if you just brought it in it's probably to send an invitation
to it, and this is how it worked before the refactoring anyway.
2016-12-27 13:23:39 -08:00
Eric House
0fc528a074 cleanup up logging 2016-12-27 13:22:37 -08:00
Eric House
57c71f4c82 invitations: disable remove when nothing checked
Subclass needs to do this one: overrides tryEnable() to handle its
button-bar buttons.
2016-12-27 11:46:15 -08:00
Eric House
216dc757ad up version strings and changelog for release 2016-12-27 11:17:03 -08:00
Eric House
f989212926 close pending game's board when invite cancelled
Add cancelled notification to invite choices dialog. Look for that in
board delegate and close the game. Makes the inviting experience more
consistent, the goal being that you never look at a game that's missing
players without some intervening dialog preventing you from trying to
play.
2016-12-26 16:06:44 -08:00
Eric House
84e8f0927c invitations cleanup: layout and reinvite
Fix a layout to be centered when one string not displayed. Fix to
pre-check by default the most recent device choice when re-inviting.
2016-12-26 15:21:10 -08:00
Eric House
f9f872695d improve checkbox handling in invite dialogs
Use an array of actual objects rather than indices, and add an equals()
method, so checkbox status can survive changes in the set of available
items and even be reproduced when the objects backing them change (as
happens after a new BT scan finishes.)
2016-12-24 12:51:39 -08:00
Joan Montané
b59d7bc3c9 Translated using Weblate (Catalan)
Currently translated at 70.1% (523 of 746 strings)
2016-12-24 15:44:15 +01:00
Eric House
92029b2443 fix to build with CURSES_ONLY flag 2016-12-22 08:57:54 -08:00
Eric House
e945bde663 Merge branch 'android_branch' into android_translate 2016-12-21 08:29:06 -08:00
Eric House
432b738257 wifi: move setting into build.xml
Control whether wifi direct is enabled from build.xml, a file that's
already different for the two variants. The point here is to do a
release with permissions changes but without having to fix everything
wrong with wifi direct.
2016-12-21 08:25:57 -08:00
Eric House
ecdec9cfd8 build system change for sdk version 23 2016-12-21 07:48:19 -08:00
Eric House
68104bcf83 remove logging 2016-12-19 22:21:51 -08:00
Eric House
994de23145 perms: use stored pairs when don't have
If user hasn't granted READ_CONTACTS permission, use the pairing of
numbers/names that's come from Contacts via the SMS invitation dialog.
Sometimes it'll have names for numbers that arrived via invitations. Do
some cleanup while at it to prevent stored BT mac addresses from being
looked up as phone numbers.
2016-12-19 22:11:26 -08:00
Eric House
f8ec19b35c perms: use remove to avoid leak 2016-12-19 21:14:45 -08:00
Eric House
2a1c7de18b permissions: get rid of instance variables
I think the params mechanism for DlgDelegate does the same thing better.
2016-12-19 06:48:13 -08:00
Eric House
f199aef738 permissions: ask for READ_CONTACTS
On launching SMS invite dialog, ask for READ_CONTACTS permission. Where
it's needed, though, is for the user-invisible process of translating
phone numbers to names (not launching the Contacts app via an
Intent). This just seems like the best place to ask since the user's
thinking about contacts and phone numbers.
2016-12-19 06:34:20 -08:00
Eric House
09188bc704 Merge branch 'android_branch' into android_sdk_23_take_3 2016-12-17 16:38:39 -08:00
Eric House
f59918bf50 cleanup: remove unnecessary methods
InviteDelegate superclass now tracks whether something is checked,
though it's not doing as well as subclasses did before, e.g. when SMS
would uncheck everything but a newly added contact.
2016-12-17 16:36:17 -08:00
Eric House
29afb19cb4 permissions: ask when opening SMS game
Add post-open test for SMS and then ask for SMS permission, giving
rationale if the OS says I should. Meant adding a new interface for
rationales and wiring that in. It's a bit spaghetti and I may think of a
cleaner way later.
2016-12-16 21:04:15 -08:00
Eric House
3a53abce52 add params option to showOKOnlyDialogThen 2016-12-16 20:57:30 -08:00
Eric House
52c2973d8f remove compile-time switch
SMS rocks and I won't be removing it.
2016-12-16 07:44:55 -08:00
Eric House
5f6cf35d93 permissions: move opening game to BoardDelegate
When opening a game that sends via SMS, check if it has permission and
offer to remove the config if it doesn't, removing a similar check from
pre-opening code. (Here it'll catch e.g. games opened from the
GameConfig process.) Sends/receives without SMS permission are already
caught by existing catch{} blocks, so there's no crash.
2016-12-16 07:35:30 -08:00
Eric House
e9d0b61254 Merge branch 'android_branch' into android_sdk_23_take_3 2016-12-15 08:10:06 -08:00
Eric House
ca0ee429bb logging and string changes 2016-12-15 08:09:28 -08:00
Eric House
9503491890 invitations: tweak file and class names
No behavior changes, just cleanup
2016-12-15 08:02:06 -08:00
Eric House
9f7975d471 rename file
And change something that was using custom layout for just its checkbox
to just use a checkbox.
2016-12-15 07:28:44 -08:00
Eric House
f8bba60798 invitations: track multiple per device in superclass 2016-12-15 07:10:54 -08:00
Eric House
502888ee03 wifi: add reset() that will help troubleshoot 2016-12-15 06:44:40 -08:00
Eric House
721ee381a5 wifi: fix invitation dialog 2016-12-15 06:40:45 -08:00
Eric House
4f43acf9cb remove unused variable 2016-12-14 08:16:05 -08:00
Eric House
cd14001db1 start rewrite of invitation dialogs
Moving stuff into superclass and trying in general to simplify
things. BT and SMS invitation work, but the option to have more than one
player per device isn't available. RelayID invitation is a mess, but was
before I think.  WiDir invitation crashes in assert because I can't
debug it on this branch. Lots of work and cleanup still required.
2016-12-14 08:14:00 -08:00
Bernard Massot
d85733f97f Translated using Weblate (French)
Currently translated at 100.0% (746 of 746 strings)
2016-12-13 15:44:46 +01:00
PapaPedro
cc2594986f Translated using Weblate (Czech)
Currently translated at 14.7% (110 of 746 strings)
2016-12-13 03:44:23 +01:00
Eric House
c398af2ac9 perms: ask for the set needed to open a game
rewrite perms23 class to use Builder pattern, making it easier to pass
more than one required permission. Use that (with hard-coded set for
now) to check and ask for permissions a game needs to communicate. Offer
to remove the comms methods the user doesn't want to permit (but that's
not implemented yet.)
2016-12-11 20:54:24 -08:00
Eric House
dfb22c13fa make gradle's suggested config changes 2016-12-11 13:33:57 -08:00
Eric House
36a0737654 fix ant build for sdk 23
pull in new version of support library .jar
2016-12-11 13:33:06 -08:00
Bernard Massot
980ac33604 Translated using Weblate (French)
Currently translated at 100.0% (746 of 746 strings)
2016-12-11 11:33:30 +01:00
Eric House
d136dd65e6 check phone permission before putting up sms choice
First, needed to remove some state caching since though a non-SMS
phone will never become one my ability to ask changes over time. Then
changed population of communication options to first ask for the
permission needed in order to find out what's supported, then to find
out what's supported via methods that will return false without
permission. Can't think of a better way right now....
2016-12-10 16:06:18 -08:00
Eric House
3389e928cc check for phone permission on boot to avoid crash
Some permission checks won't fall back to asking if it doesn't make
sense given what the user's doing at the time.
2016-12-10 15:08:09 -08:00
Eric House
39f08bd3d3 remove verbose flag 2016-12-10 14:58:24 -08:00
Eric House
bec5ad82c0 query before loading saved games too 2016-12-10 14:03:25 -08:00
Eric House
a3ccce00fa starting requesting permissions
Before writing to storage, ask permission. This adds basic ability to
query and route the OS's callback back to the code that asked.
2016-12-10 13:49:51 -08:00
Eric House
b6194f6986 Merge remote-tracking branch 'maidu2/android_branch' into android_sdk_23_take_3 2016-12-09 22:01:48 -08:00
Eric House
a1e4d4da0e pass TAG to printStack() and logex
So they'll show up when using logcat filtering
2016-12-09 07:34:51 -08:00
Eric House
25c2fd16ef use cmd strings; log discovery running or not
Add a compile-time option to send commands in json as strings rather
than ordinals (ints) for easier reading of logs. And log/keep track of
when discovery's turned off or on in case it's useful for making all
this work.
2016-12-09 07:20:27 -08:00
Eric House
2b120959ae new debug option for games list title: connection method 2016-12-06 19:39:14 -08:00
Eric House
3d5479565e wifi: send for open game too
In handling resend for a newly available transport, if the lock can't be
obtained see if that's because the game's currently open and if so post
to its thread.
2016-12-06 09:03:33 -08:00
Eric House
2c6ce5c1a8 interface name change only 2016-12-06 08:20:58 -08:00
Eric House
dc2cd239a1 wifi: send pending messages on getting connected
Each time we get a socket to a peer, try sending all pending wifi direct
messages. It's a hack, but trying to send isn't that expensive and the
experience is much improved.
2016-12-06 08:15:09 -08:00
Eric House
6eb2a7b71b wifi: pay attention to wifi being enabled
Don't keep trying to connect if wifi's off, and start trying when it's
turned on.
2016-12-05 20:23:52 -08:00
Eric House
19bb3ef7dd check standalone before iterating on addresses
New crash deleting non-networked games: needed to test first.
2016-12-05 07:35:54 -08:00
Eric House
9c14e0e858 rename method: sendResult -> postEvent 2016-12-05 07:24:25 -08:00
Eric House
aa420ce4d1 notify remote when BT game deleted 2016-12-05 07:12:22 -08:00
Eric House
ef0eeaae2e improve dead game notification
When contacting opponents, iterate over opponent addresses rather than
information cached in the summary. Start implementing for BT, but that
needs more work. Change enum names in WiDirService state machine.  P2p
opponent notification untested because apparently an open hotspot, which
you can't prevent devices from connecting to, breaks P2P connectivity.
2016-12-03 10:28:24 -08:00
Eric House
bc9baa2e79 wifi: don't crash when don't have permissions 2016-12-03 08:15:08 -08:00
Eric House
eecae536ec add missing log levels: was dropping before 2016-12-02 20:03:44 -08:00
Eric House
f9d352cb25 wifi: notify when game deleted 2016-12-02 08:17:03 -08:00
Eric House
54ed327406 wifi: notify when game missing
Rewrite to use new XWPacket class that wraps JSONObject but could later
support a binary format, and reply with new message when packet arrives
for a game that does not exist. Code already present turns that into an
invitation to delete the game.
2016-12-01 07:48:03 -08:00
Eric House
54d02e0fb2 wifi: update status on first connect
And remove the hack pretending on lack of permission that support was
compiled out.
2016-12-01 06:11:51 -08:00
Eric House
bf83741393 track and log failure counts
Later will likely want to restart when get above some threshold
2016-11-30 07:55:25 -08:00
Eric House
0a26496e73 wifi: tweaks
fix race condition in accept thread; only call wifimgr.connect() on
guest side. Connectivity now works reliably if the guest starts, or is
restarted, when the group owner is running. If owner is restarted the
guest seems never to connect (without restart.)
2016-11-30 07:06:59 -08:00
Eric House
a686541f96 merge recent manifest changes 2016-11-30 06:58:56 -08:00
Eric House
a3bc4f0a75 fix compile error from merge 2016-11-28 20:21:40 -08:00
Eric House
0237403a26 Merge branch 'android_release' into android_branch
This will probably not compile...
2016-11-28 20:19:54 -08:00
Eric House
6171d9ce90 prep a quick-fix release, with string changes
Two crashes reported on the Google Play store in the 112 version have at
least easy work-arounds: catching exceptions and doing nothing. In both
cases that should be harmless, so assuming the causes are rare it's a
good move.
2016-11-28 20:02:38 -08:00
Eric House
f415cf22ca change strings for next release 2016-11-28 19:19:03 -08:00
Eric House
1a513e8b02 add a bit of logging 2016-11-28 07:40:09 -08:00
Eric House
2fa47f057d use TAG instead of class for logging
Moving to the traditional use of Log class, with TAG defined in every
class that logs. It's just easier to use all the facilities built into
logcat.
2016-11-27 21:24:21 -08:00
Eric House
49d75d5d91 converting to use standard TAG-based logging
First files done manually: add TAG to file and pass it rather than class
to log wrapper. Rest will be done with a script.
2016-11-27 21:22:51 -08:00
Eric House
97c1091d0c add TAG everywhere
results of running a script that adds TAG to every top-level class. It
compiles, but I'm not using them yet.
2016-11-22 22:10:05 -08:00
Eric House
927c181ccc rename variable
TAG has conventional meaning I'm about to take advantage of, so rename
the one variable that would conflict.
2016-11-22 21:46:42 -08:00
Eric House
b8844a0e2d rewrite connection logic
Make it a trivial state machine that implements Runnable and
ActionListener so it can be scheduled and notified easily. Removes a
bunch of code. Connecting still happens unreliably, but it should be
easier to tweak things now.
2016-11-22 19:28:10 -08:00
Eric House
bff03617e5 wifi: hide unused buttons
Refactoring isn't perfect. Need to hide in subclass buttons that other
subclasses assume.
2016-11-22 00:17:49 -08:00
Eric House
e0f0666b1c wifi: make invitations work
Add UI, minor thanks to recent refactoring, to allow invitations via
wifi direct. Uses a mapping of all currently known device mac addresses
to names, with only the latter shown to users. Works well, though
something I changed seems to have causes devices to start losing track
of their connections to each other.
2016-11-21 21:10:16 -08:00
Eric House
3f0bef48f6 refactor invite UI
In order that wifi direct invitation dialog isn't another near-copy of
an existing file move a bunch of stuff into the common superclass.
2016-11-21 20:54:29 -08:00
Eric House
a67f2205bb log thread starts/stops 2016-11-18 20:13:48 -08:00
Eric House
930146cf11 wifi tweaks
Show net status as failing when no sockets available, and notice when
they're closed.
2016-11-17 23:22:28 -08:00
Eric House
4389c63718 wifi: fix compile; do less work on release build
The group info stuff I'm polling for is used only to log interesting
information, so drop it.
2016-11-17 22:22:08 -08:00
Eric House
14c34f3e70 wifi: get rematch working
required hooking up invitations, so the user-visible part of that should
be easy to do once device names are being communicated.
2016-11-17 22:14:36 -08:00
Eric House
9cfbb3c45b wifi: add status update on successful write 2016-11-17 20:17:13 -08:00
Eric House
822f34ac48 wifi: forward packets through group owner
Simple fix to the problem that a group owner may not be in the role of
game host: if I'm a guest and don't have a socket for the mac address to
which I need to send, slap src and dest addresses into the message and
send it to the group owner. That device can then forward it.
2016-11-17 20:03:02 -08:00
Eric House
5659fe9096 include wifi device name in status 2016-11-16 21:27:14 -08:00
Eric House
6f29b78456 wifidirect make connections much more reliable
Found a recipe for service discovery that at least in the bit of testing
I've done is much more reliable. Devices connect almost
immediately. Basically everything chains through onSuccess() handlers.
URL to recipe is in code.
2016-11-16 21:23:46 -08:00
Eric House
491432a3bb toward having debug-only component to net state for p2p 2016-11-16 20:55:32 -08:00
Eric House
93f23dd87c wifi: shorten class name 2016-11-16 08:23:25 -08:00
Eric House
1dd28855cb wifi stop service request once it's done its work
Examples kill it before calling connect(), so do the same. Seems to make
connection more reliable. (Pending: handle case where more than one
two devices are in the group!!!)
2016-11-16 08:10:51 -08:00
Eric House
d45635273d wifi start adding network status updates 2016-11-15 21:12:59 -08:00
Eric House
239beafcfa wifi: can now play a full game
Made WifiDirectService into an actual service in order to better process
incoming packets. Now works for game messages from comms, and posts
notifications when app's in background. The latter requires using the
app context from XWApp since unlike the other transports this one
doesn't involve the OS invoking us with a Context.
2016-11-15 20:50:29 -08:00
Eric House
1c4ae5fcfd wifi snapshot
Got to the point where I have an open socket for the packet I want to
send! Lots of changes to how discovery works seem to have improved
reliability though I'm still unimpressed. Much to learn.
2016-11-15 07:49:06 -08:00
Eric House
33326d38a7 wifi direct: harvest and send mac address
Grab and store the local device's mac address. Add p2p as a type of
address, represented by the mac address of the recipient. Include the
local device's address in invitations sent when specified by user. Now
the WifiDirectService class is being passed a packet and the address of
the recipient; it will next need to set up sockets with every device it
encounters and map them to their mac addresses so that it can do a send.
2016-11-14 08:06:53 -08:00
Eric House
7d8708b8fa don't crash if don't have wifi permissions
For now, -dbg version will have and non-dbg won't, so catch exception
first time we try to do wifi stuff and disable if that exception is thrown.
2016-11-13 20:48:08 -08:00
Eric House
7a1965aeaf fix Nougat-only draw bug
Starting with the release of Nougat there have been cases where the
board would not correctly redraw. It's been most evident when using the
hit feature many times in a row, with something going wrong every fifth
time or so (but not that consistently.) It's as if modifications of the
bitmap backing BoardCanvas were being done asynchronously and not
necessarily all completed when I blit the canvas to the screen via
canvas.drawBitmap(). (As evidence of this I confirmed that a tap on a
tile in the tray after a bad draw would cause the screen to correct
itself even though the only additional rendering was to the tray. So by
the time that second drawBitmap() call happened the bitmap data was
correct: all draws that hadn't completed earlier had done so by now.)

The fix is to call Bitmap.createBitmap(bitmap) and to use the copy as
the source of the canvas.drawBitmap() blit operation. I suspect that
createBitmap() waits for any pending draws into its source to complete
before making the copy. Regardless, if this hasn't fixed the problem
it's made it so rare that I'm not seeing it, and since I'm only doing
the copy on Nougat there's little risk in the change. And I can't detect
any problems coming from the considerable additional memory being used
and immediately marked available for gc.
2016-11-13 13:29:20 -08:00
Eric House
de00a6c87a fix Nougat-only draw bug
Starting with the release of Nougat there have been cases where the
board would not correctly redraw. It's been most evident when using the
hit feature many times in a row, with something going wrong every fifth
time or so (but not that consistently.) It's as if modifications of the
bitmap backing BoardCanvas were being done asynchronously and not
necessarily all completed when I blit the canvas to the screen via
canvas.drawBitmap(). (As evidence of this I confirmed that a tap on a
tile in the tray after a bad draw would cause the screen to correct
itself even though the only additional rendering was to the tray. So by
the time that second drawBitmap() call happened the bitmap data was
correct: all draws that hadn't completed earlier had done so by now.)

The fix is to call Bitmap.createBitmap(bitmap) and to use the copy as
the source of the canvas.drawBitmap() blit operation. I suspect that
createBitmap() waits for any pending draws into its source to complete
before making the copy. Regardless, if this hasn't fixed the problem
it's made it so rare that I'm not seeing it, and since I'm only doing
the copy on Nougat there's little risk in the change. And I can't detect
any problems coming from the considerable additional memory being used
and immediately marked available for gc.
2016-11-13 13:20:00 -08:00
Eric House
e6561cbcac debugging aids
commented-out logging of drawCell, with flags; debug-build checks that
static rects passed to java draw code aren't being used by multiple
threads at once.
2016-11-12 07:20:28 -08:00
Eric House
41581cbddb cleanup: remove unused variable, unnecessary final 2016-11-12 07:07:19 -08:00
Eric House
92e413fa06 make boardBegin() a no-op in C
instead of a no-op in java, which takes more work to get to.
2016-11-12 06:57:05 -08:00
Eric House
f394bcef64 use max backoff time if no relay games 2016-11-11 06:31:54 -08:00
Eric House
edcafe1c45 housekeeping
gitignore new files; try to limit projectile searches
2016-11-11 06:30:55 -08:00
Eric House
7087ae96ff cleanup: resolve diffs between AndroidManifest.xml versions 2016-11-09 08:40:17 -08:00
Eric House
6d1d4abdd5 add backoff to relay pings
Current code is hitting the relay every 60 seconds, at least on
non-google-play installs like f-droid. Switch to using a backoff timer
that maxes out at once per hour. Eventually may want to not run the
timer at all when there aren't any unfinished relay games present.
2016-11-09 07:53:24 -08:00
Eric House
9cd76d887d fix weird double-bang thing 2016-11-09 07:45:39 -08:00
Eric House
55d86d5ca2 don't try drawing snapshot in curses mode
Was crashing on game save. Add to main launchParams struct whether we're
in curses or gtk mode and only save snapshot in latter case.
2016-11-09 07:38:41 -08:00
Eric House
154e428fa8 more work on wifi direct
Now sends and receives a single packet more often than not. Disabled for
non-DEBUG devices, and new permissions that are required are commented
out so I don't accidentally ship before the sdk-23 permissions stuff
makes additions less scary.
2016-11-07 07:02:27 -08:00
Eric House
85c12d6a85 new file to wrap sockets
Untested class that wraps a bi-directional tcp socket using a
length-plus-data stream format. Just checking it in for now.
2016-11-04 20:36:11 -07:00