Commit graph

10459 commits

Author SHA1 Message Date
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