Commit graph

7710 commits

Author SHA1 Message Date
Eric House
9993ef1e4c add function to return all apks sorted by creation time 2014-03-26 08:22:17 -07:00
Eric House
e70bb33537 break ChatActivity up 2014-03-25 22:29:20 -07:00
Eric House
558d34bc98 break part of BoardActivity out into BoardDelegate (and make a bunch of little changes that required) 2014-03-25 21:53:38 -07:00
Eric House
609962df58 cleanup 2014-03-25 07:21:12 -07:00
Eric House
0430cfbd24 break parts of StudyListActivity into StudyListDelegate 2014-03-25 07:14:22 -07:00
Eric House
dae0c7208f rename StudyList -> StudyListActivity 2014-03-25 06:31:59 -07:00
Eric House
8084e63d09 add and use a showDialog() that takes a DlgID 2014-03-25 06:26:28 -07:00
Eric House
e0c0ff219f rename onCreateDialog createDialog where it's not an overridden method 2014-03-25 06:16:46 -07:00
Eric House
cae30c61e8 need onCreateDialog() to get into DlgDelegate; onContentChanged needs to call super() 2014-03-25 06:03:25 -07:00
Eric House
1da9d36f3a emacs added missing file-terminating NL 2014-03-25 06:02:07 -07:00
Eric House
c988859063 get rid of XWExpandableListActivity 2014-03-24 22:18:58 -07:00
Eric House
b78514ca6c break parts of DictsActivity into DictsDelegate 2014-03-24 21:48:03 -07:00
Eric House
6c8cedf5bb rename GamesList -> GamesListActivity, then move most of it into GamesListDelegate. This is part of exploring what it'll take to separate Activity-ness from the rest that can then also be used, say, from a Fragment. 2014-03-24 21:10:02 -07:00
Eric House
5ff5074180 yet another version of showConfirmThen() 2014-03-24 21:08:06 -07:00
Eric House
ef381f1d71 hide more files (changes generated) 2014-03-24 20:27:19 -07:00
Eric House
c60da510cb add new source file 2014-03-24 20:26:56 -07:00
Eric House
9af9e2089b ignore more files in dbg dir 2014-03-24 19:54:35 -07:00
Eric House
6256e2a843 don't show check-for-updates menuitem unless we can update something: we're not installed from the Play store OR we've installed at least one wordlist. 2014-03-24 07:37:44 -07:00
Eric House
b4df0125cc make formatting uniform (no code change) 2014-03-24 06:56:21 -07:00
Eric House
57e2dd5492 make remote/robot score report dialog non-blocking to fix ugly first-game experience 2014-03-24 06:55:13 -07:00
Eric House
a842363be1 rename file: Lookup dialog is no longer an Activity 2014-03-23 18:53:38 -07:00
Eric House
73a1083dff only show lookup menuitem when there's a single word selected, and include that word in the menu title 2014-03-22 10:37:48 -07:00
Eric House
e2cd275459 cleanup 2014-03-22 10:14:27 -07:00
Eric House
c426741fa1 use same counter title for wordlist and studylist browsers 2014-03-21 19:54:30 -07:00
Eric House
0b01caf262 add missing image, fixing build breakage 2014-03-21 19:48:28 -07:00
Eric House
9dab6bc772 add studylist menu to lookup selected words -- same as tapping, but maybe easier to discover. 2014-03-21 19:42:23 -07:00
Eric House
b776b7cd71 try inverting it 2014-03-21 19:07:12 -07:00
Eric House
13b64871d5 update strings for release 2014-03-21 18:57:00 -07:00
Eric House
638f9725e3 new versions of placeholders 2014-03-20 18:57:15 -07:00
Eric House
2f49f64c4f clear selection in onResume since we're rebuilding list; fixes it being forever out of sync after a wordslist is opened 2014-03-20 18:56:56 -07:00
Eric House
c2c81dbbf1 use tmp model to find words crossing a point to avoid undoing pending turns 2014-03-20 18:52:57 -07:00
Eric House
5d32fce43e don't allocate new Runnable on every draw 2014-03-20 05:18:40 -07:00
Eric House
673ab53a61 go back to extending XWListAdapter 2014-03-20 05:11:52 -07:00
Eric House
3717035150 include number to be deleted in comfirm message 2014-03-19 22:56:17 -07:00
Eric House
c7818bd364 build query a bit more effeciently 2014-03-19 22:52:33 -07:00
Eric House
38fe8ec3fd invalidate menubar when might change 2014-03-19 22:39:21 -07:00
Eric House
426e939b61 hook up onClick to launch lookup 2014-03-19 22:25:14 -07:00
Eric House
64a5aab456 hook up long click to [de]select 2014-03-19 21:36:49 -07:00
Eric House
fd817a98da implement menus, including adding crappy placeholder icons 2014-03-19 21:29:20 -07:00
Eric House
aa6fbf8605 snapshot on the way to making studylists editable: add checkbox to xwlistitem. It's to be an alterative to long tap to select. Implement selectAll and deselectAll. 2014-03-19 20:42:29 -07:00
Eric House
e7708ef439 fix NPE when serializing 2014-03-19 20:17:53 -07:00
Eric House
c333e561af use a global enum for DlgDelegate actions -- should be no real code change 2014-03-18 06:06:21 -07:00
Eric House
12e77e8c47 get rid of three Utils.format calls 2014-03-17 08:20:43 -07:00
Eric House
a5f0c797bb use one message for deletion of groups, whether one or many 2014-03-17 07:45:09 -07:00
Eric House
37b2458140 add number being reset to message 2014-03-17 06:56:10 -07:00
Eric House
cb5bb00ef0 remove LookupActivity 2014-03-14 19:21:31 -07:00
Eric House
94a838d88e give lookup alert a title 2014-03-14 18:55:06 -07:00
Eric House
be440c8abf try, again, making lookup dialog an alert rather than an activity. It's a much better experience on a nexus 5 but I've lost my records of why I made it an activity in the first place -- what phones it sucked on as an alert. Still probably doesn't bundle itself correctly and is missing a title. 2014-03-14 18:41:54 -07:00
Eric House
d4930e157b make method private 2014-03-14 07:12:53 -07:00
Eric House
ea189c5717 turn study lists on by default 2014-03-14 06:45:17 -07:00
Eric House
94d9a03d51 add enum to hold all dialogIDs so they're forced to be unique across the app. (The diff's big but there's no behavior change.) 2014-03-14 06:37:32 -07:00
Eric House
ad0f882335 change port to live server's so recovery can be faster 2014-03-12 19:47:14 -07:00
Eric House
5f34fe3317 first cut at script to fetch messages for a game 2014-03-12 19:45:07 -07:00
Eric House
ed41fdd924 Fix to work with newest format. (This should fix updating of wordlists.) 2014-03-12 19:26:08 -07:00
Eric House
b869940997 fix another 64-bit bug, this one prevening opening new SOWPODS. 2014-03-12 19:24:00 -07:00
Eric House
2bb9a12b63 add missing (for android build) header 2014-03-11 22:04:30 -07:00
Eric House
1ee16ca09d remove unnecessary import 2014-03-11 22:01:30 -07:00
Eric House
d1a9b716bb protect refcount operations with mutex 2014-03-11 22:01:11 -07:00
Eric House
4231ed1108 fix refcount leak 2014-03-11 21:59:53 -07:00
Eric House
fbcd953a3e define as void instead of <empty> 2014-03-11 19:38:51 -07:00
Eric House
7d8f5844bd fix to compile without DEBUG defined 2014-03-11 19:38:08 -07:00
Eric House
640837f318 up strings for new release 2014-03-11 19:16:41 -07:00
Eric House
a3e9562654 put related fields together -- no code change 2014-03-11 07:02:10 -07:00
Eric House
dee75f5a0a don't ref dicts from dmgr_get() 2014-03-10 21:50:06 -07:00
Eric House
a4302897e2 enlarge dictmgr to track a compile-time defined number of dicts 2014-03-10 21:01:24 -07:00
Eric House
55267f2e42 add memmove 2014-03-10 20:25:38 -07:00
Eric House
f601f2bf57 use dictmgr in java. This requires jni globals that live across boards being opened and that include a mempool dicts will be allocated out of. Seems to work, and to get ref counts as high as 6 or so before they drop down to one when all boards are closed. (The final is held by the dictmgr which won't give it up until the app itself is GC'd) 2014-03-10 19:14:59 -07:00
Eric House
3c32ca6402 add option to log callsites of dictmgr put and get for easier ref leak tracking 2014-03-10 18:59:10 -07:00
Eric House
6203a23c62 don't crash in networked games 2014-03-10 18:58:16 -07:00
Eric House
fec1ce3bed use pthreads mutex to protect with will become critical sections in dict mgr, as will be accessed from several threads on android 2014-03-10 18:56:39 -07:00
Eric House
5500d36cde add and use dict manager that caches, using refcount, dicts across games. Allows multiple games to be opened, and open at the same time, with only one instance of a dict ever created. Works on linux; not used or tested yet on Android. 2014-03-09 19:12:21 -07:00
Eric House
a2671f5ef0 add global mempool that can survive individual games, and include it every game's globals. Use it instead of game's mempool to create dictionaries so they can outlive a game and not trip asserts on pool delete. Wrap dicts in a java class that refcounts them when BoardCanvas wants to keep one so that, I hope, the bug using a deleted dict will go away. 2014-03-09 14:46:33 -07:00
Eric House
9f5d470c07 no need for final 2014-03-09 14:39:18 -07:00
Eric House
9d9c822bb8 save, commented out, how to call the contstructor of a nested class -- in case I go back to doing things that way. 2014-03-09 14:23:24 -07:00
Eric House
a7c114e3f9 refcount dicts. Model "owns" its copy and so increments the refcount when gaining one and decrements the count on any being replaced (and on all on exit). This is setting up the real change, which is to let the java world wrap dicts in objects that hang onto them until they're destroyed, which should fix problems where dicts are referenced after they've been destroyed. 2014-03-08 20:57:27 -08:00
Eric House
8a6adfec34 cleanup -- no logic change 2014-03-08 20:51:49 -08:00
Eric House
e0c17c50b3 catch off-thrown exception. This should prevent a crash, but the fix is probably to figure out why it's happening -- later. 2014-03-08 12:55:46 -08:00
Eric House
23b72467bb don't assert unset cookieID, as that's normal (I think) for unconnected case 2014-03-08 12:47:58 -08:00
Eric House
fb7c1682b4 tweak string 2014-03-07 19:10:06 -08:00
Eric House
3b971e0153 tweak build timestamp format 2014-03-06 22:11:13 -08:00
Eric House
c31c9cb365 don't show resend menuitem unless there are moves to resend 2014-03-06 07:43:20 -08:00
Eric House
c982fb54d9 up strings and notes for new release 2014-03-06 06:47:43 -08:00
Eric House
3daa877bee Send from resend asyncTask using factored-out code in CommsTransport. Works for SMS at least. 2014-03-05 07:15:34 -08:00
Eric House
923ac6db98 show loadDB menuitem only when nothing's selected 2014-03-05 06:37:02 -08:00
Eric House
45ace48490 tweak string 2014-03-05 06:32:03 -08:00
Eric House
bcfd27ee7f don't crash when there's a SMS game with pending messages 2014-03-04 21:38:22 -08:00
Eric House
5ebbf87c24 don't kick off async task if there's nothing to send 2014-03-04 21:13:23 -08:00
Eric House
811be34a20 remove logging 2014-03-04 21:12:40 -08:00
Eric House
cfee7ef8ac resend all messages from the network change broadcast receiver itself instead of GamesList, which will not be listening if another activity is in front or if the app's in the background. 2014-03-04 19:03:39 -08:00
Eric House
3c0b4a899f resend all unacked messages each time we regain network, but only up to four times/hour. 2014-03-04 18:36:46 -08:00
Eric House
431b24409f Fix kitkat-only problem where expiring rects are clipped at top and left 2014-03-04 07:40:25 -08:00
Eric House
0a601a73a4 (commented out) line to cause ndk to be built without optimization for better source-level debugging 2014-03-04 07:07:44 -08:00
Eric House
7002ff11c7 fix so non-DEBUG build compiles 2014-03-04 07:07:01 -08:00
Eric House
df771f50c4 add function that resends all pending (un-ackd, at the comms level) messages for unlocked games and, for testing mostly, a menuitem on the main activity to trigger it. Probably crashes if there's a message for a game connected by other than relay. 2014-03-04 07:05:55 -08:00
Eric House
60bce8f22b add menuitems recently added to non-small-devices' menu 2014-03-02 20:34:58 -08:00
Eric House
9d174740c8 don't show "send pending messages" menuitem when there are none 2014-03-01 16:15:35 -08:00
Eric House
386c28e596 don't notify network change listeners unless a change is in fact a change and until there's been two seconds without changes. There's a lot of connection up-and-down spam when connecting and maybe with iffy connectivity, and no point in passing that through to code that will do stuff like stopping a send thread in response. 2014-03-01 15:17:14 -08:00
Eric House
23638310bc register for net state changes, and toast/log on debug builds. This is toward resending from all games with packets pending on reconnect. 2014-03-01 14:59:17 -08:00
Eric House
56c05869da allow to run from bin directory, which turns out to be useful 2014-03-01 12:39:51 -08:00
Eric House
d122b7d2ff include all .xml and .java files, but only if they're not named in a .gitignore file in the same directory 2014-03-01 11:44:20 -08:00
Eric House
c1e22dd3cf add summary DB column and jni code to fetch it to store and display number of unacked messages a game has. And add debug-only option to display it in the main list. In the future I want to be able to iterate over all these games and resend their packets (without opening them visually) when an internet connection comes back up. 2014-02-28 18:59:12 -08:00
Eric House
242f722f2e remove logging 2014-02-28 18:56:39 -08:00
Eric House
e536a6d3ee format build timestamp added to about dialog 2014-02-28 06:47:44 -08:00
Eric House
1d85a74a6c readd old assertions -- and fix compile error 2014-02-28 06:47:27 -08:00
Eric House
b45fcf2aa6 force output in UTF-8 -- fixes German BYOD display and still works for English 2014-02-28 06:27:54 -08:00
Eric House
9a94663fb8 log when we drop a message because two possible receiving games are open 2014-02-28 06:13:52 -08:00
Eric House
61080e1b62 revert changes pausing instead of exiting JNI thread (and so not saving game data) from BoardActivity's onPause() when onFinishing() returned false. This is necessary because there are cases where moves were generated and sent without local state ever being saved because onPause() was called only once on what turned out to be activity termination. 2014-02-28 05:57:32 -08:00
Eric House
cc4982b833 add debug-only code to assert that movestack is never disposed when dirty (via macros easy to use elsewhere) 2014-02-28 05:43:47 -08:00
Eric House
efbb676cce better formatting for hexdump offsets 2014-02-28 05:42:22 -08:00
Eric House
3ecd0a4b03 fix to compile without DEBUG 2014-02-28 04:58:25 -08:00
Eric House
2f7839f7e0 cleanup 2014-02-28 04:35:39 -08:00
Eric House
39983f65b6 remove logging 2014-02-27 21:44:25 -08:00
Eric House
5274a803b2 move menuitem 2014-02-27 19:13:22 -08:00
Eric House
29d08b95ce expose comms_getStats() via a debug-build-only menu and dialog 2014-02-26 21:41:49 -08:00
Eric House
4e2c93fd3c more work on script 2014-02-26 07:52:18 -08:00
Eric House
33d6f212b2 beginning of a script to parse relay logs 2014-02-25 07:56:48 -08:00
Eric House
1f9a4180e8 remove misleading comments 2014-02-25 07:56:22 -08:00
Eric House
fc799449e9 save game and summary in a synchronized block so lock doesn't get released halfway through 2014-02-24 21:50:17 -08:00
Eric House
27a5990283 log out-of-date token 2014-02-24 08:00:52 -08:00
Eric House
cd31cd432a tweak column display 2014-02-24 08:00:43 -08:00
Eric House
b840f7d708 add filter for rooms 2014-02-24 08:00:21 -08:00
Eric House
565a466164 capitalize note 2014-02-23 12:10:19 -08:00
Eric House
fe2a623a5a use sowpods list from freescrabbledictionary.com 2014-02-23 11:28:49 -08:00
Eric House
f50c1191b5 fix to compile and produce correct output on 64-bit system 2014-02-23 11:26:10 -08:00
Eric House
a72932486b toward having networking and activity swaps work without fully
shutting down the game in onPause(): use pause() and resume() to
suspend the jnithread when the game's been unlocked.
2014-02-13 19:29:35 -08:00
Eric House
7c45e3c5b3 add pause() and resume() 2014-02-13 19:26:09 -08:00
Eric House
1e30582c3b more logging 2014-02-13 07:50:21 -08:00
Eric House
802e798180 refactor 2014-02-13 06:44:57 -08:00
Eric House
89435fc688 fix to compile 2014-02-13 06:40:39 -08:00
Eric House
b3cce8c535 reduce verbosity and add info to GameLock logging 2014-02-13 06:33:30 -08:00
Eric House
de7638525a commit sdk-generated file (might be better to ignore it?) 2014-02-13 06:31:31 -08:00
Eric House
44e52278a4 remove unused method 2014-02-12 07:52:39 -08:00
Eric House
218d232798 add dictNames() variant that takes a GameLock 2014-02-12 07:35:49 -08:00
Eric House
61334efa1a fix to generate rather than copy 2014-02-12 07:35:12 -08:00
Eric House
536a1e3b13 install dbg variant too 2014-02-11 22:11:28 -08:00
Eric House
c0e7c0bf88 only log stack for first and last attempts to get lock 2014-02-11 22:11:16 -08:00
Eric House
80c3374728 add build timestamp to about dialog (needs better formatting) 2014-02-10 19:20:35 -08:00
Eric House
ea6da8cd74 add crittercism library 2014-02-10 18:55:16 -08:00
Eric House
9b43fed03f rule for .jar files: copy 2014-02-10 18:32:00 -08:00
Eric House
bdfbb3ffca update bt build, adding new .java file and logic to copy gcm.jar rather than commit a copy of it. 2014-02-10 18:30:19 -08:00
Eric House
6332bbbcbe use ccache 2014-02-10 18:24:42 -08:00
Eric House
339e784d7c fix compile warnings 2014-02-10 18:23:03 -08:00
Eric House
4b293ac89b add Crittercism App ID if available 2014-02-10 07:32:16 -08:00
Eric House
d02481879b catch debug variant up with recent changes and lay groundwork for including crittercism in it. 2014-02-10 07:31:52 -08:00
Eric House
daa59ee03d pass Context to CrashTrack 2014-02-10 07:14:00 -08:00
Eric House
f27394ca03 framework for calling Crashlytics from debug variant 2014-02-10 06:53:39 -08:00
Eric House
f2ad4fd3d5 add StudyList activity and otherwise catch up 2014-02-10 06:19:16 -08:00
Eric House
0d80511a1a remove logging 2014-02-09 19:35:35 -08:00
Eric House
025bcb885b don't move state forward when should be moving back 2014-02-09 19:35:17 -08:00
Eric House
b56d990a04 go back to overriding onPause and onResume, but don't tear down the game unless isFinishing() returns true 2014-02-08 16:50:27 -08:00
Eric House
5e3c26d453 track current BoardActivity instance using HashSet rather than single instance since during transitions there can be two. Fixes asserts from recent commit. 2014-02-07 21:22:13 -08:00
Eric House
0b132661ca change struct name from r to rr for easier searching; no code change 2014-02-07 21:12:45 -08:00
Eric House
a4e65f667d add ok button to about dialog 2014-02-07 07:59:34 -08:00
Eric House
ca8a901bbb add assertion aimed at confirming theory about race-condition based Android crash 2014-02-07 07:41:50 -08:00
Eric House
a388351219 save/load games in onStop/onStart rather than onPause/onResume so we don't do it as often, and specifically not every time the LookupActivity is pushed. This is an experiment. 2014-02-07 07:40:34 -08:00
Eric House
d97784ba13 track which dialog is blocking rather than just that there is one 2014-02-07 07:38:07 -08:00
Eric House
ed9b9646e7 launch app after installing 2014-02-07 07:34:09 -08:00
Eric House
048ae63802 make bad-words reporting dialog blocking so robot doesn't go ahead and move and put its moved dialog up on top of the bad words one before it's dismissed; also change name of string to reflect that it's a format. 2014-02-06 07:22:57 -08:00
Eric House
f6a1e06d41 create myGames group only on upgrade and only if there are existing games to put into it. 2014-02-05 19:46:42 -08:00
Eric House
ca57da44c6 fix duplicate column crash when upgrading 2014-02-05 19:34:42 -08:00
Eric House
18f31ad9d6 up strings for new version 2014-02-03 07:42:59 -08:00
Eric House
46b02d49c1 generated gitignore changes in bt directory 2014-02-03 07:29:12 -08:00
Eric House
6dfaf8127f fix reported crash: assertion copying non-network game 2014-02-03 07:28:38 -08:00
Eric House
f805d7309f modify emacs compile command to use find-and-ant.sh 2014-02-02 11:40:40 -08:00
Eric House
2b653dcf9b add build script 2014-02-02 11:27:09 -08:00
Eric House
babb02898e credit BRS 2014-01-31 18:22:32 -08:00
Eric House
f65b5fda71 don't disable button after it's used: feels as if the device is hanging 2014-01-31 18:22:21 -08:00
Eric House
b29dcb1d2c add debug-only logging toward figuring out occasional bad-dict crash 2014-01-31 07:55:07 -08:00
Eric House
57cd547078 remove apparently gratuitous second call to srandom 2014-01-31 07:54:43 -08:00
Eric House
dd38543398 add toast to confirm that word's been added 2014-01-31 07:25:28 -08:00
Eric House
cb574ca156 up version strings 2014-01-31 07:25:07 -08:00
Eric House
ff2615fbc6 Merge branch 'android_studylist' into android_branch 2014-01-31 06:43:36 -08:00
Eric House
c40cef2101 add newbie tip for studylist copy feature 2014-01-30 21:31:14 -08:00
Eric House
426b5b59b2 for better discoverability, always show the studylist menus when the feature's on and supply explantions when there's nothing to show 2014-01-30 19:16:00 -08:00
Eric House
9dc94c97b2 put some of DlgDelegate's methods into an interface that can be passed around to be called by non-activities. 2014-01-30 19:14:23 -08:00
Eric House
647282968a hide the label and spinner when there's only one language 2014-01-30 08:15:43 -08:00
Eric House
433993a384 remove early -- should not have gone out 2014-01-30 07:30:34 -08:00
Eric House
3ea86e630d add label before lang-pick spinner 2014-01-30 07:12:32 -08:00
Eric House
a8d01f6de2 remove mistaken break 2014-01-30 07:00:30 -08:00
Eric House
cd6293fbd3 ignore img_src/ -- for now anyway 2014-01-30 06:39:50 -08:00
Eric House
652ce75277 add actionbar icon for copy 2014-01-30 06:38:03 -08:00
Eric House
f78af55cd1 disable add-to-list button after adding so there's feedback 2014-01-30 06:26:40 -08:00
Eric House
8e3cbdc1e3 Merge branch 'android_branch' into android_studylist 2014-01-29 21:56:28 -08:00
Eric House
32ecd1d026 more studylist: add lookup-on-tap, show language in title bar, and add
menuitem to board menu too
2014-01-29 19:37:04 -08:00
Eric House
253be9a48e ignore more stuff 2014-01-29 19:29:43 -08:00
Eric House
11767a41e4 show toast on successful paste 2014-01-29 07:49:57 -08:00
Eric House
21f2936e87 confirm before deleting all words 2014-01-29 07:43:45 -08:00
Eric House
b5d4b6b778 implement clear (without warning) 2014-01-29 07:36:05 -08:00
Eric House
2520fb4c05 add menu and implement copy-to-clipboard 2014-01-29 07:15:25 -08:00
Eric House
d02787f591 fix capitalization 2014-01-28 18:52:35 -08:00
Eric House
42f35cb3d9 populate study list, doing the sorting in the DB query for now 2014-01-28 07:48:08 -08:00
Eric House
3f8e456db2 populate language chooser 2014-01-28 07:15:59 -08:00
Eric House
4421472391 add (empty so far) studylist browser and menu to invoke it 2014-01-28 06:50:27 -08:00
Eric House
9d19bed3b7 add studyListLangCount() 2014-01-28 06:32:25 -08:00
Eric House
aab876bf6d remove toast 2014-01-27 21:25:22 -08:00
Eric House
49d26dab07 rough out UI for adding selected or played words to study list DB. Next: add a UI for displaying it etc. 2014-01-27 21:24:57 -08:00
Eric House
af035962e6 revise release notes; up version code 2014-01-27 18:58:41 -08:00
Eric House
1f698eae6d use ccache for relay build too 2014-01-25 19:03:50 -08:00
Eric House
b3ebadfde5 test for null that should never happen but google play says does. 2014-01-25 19:03:22 -08:00
Eric House
e9ffcdbbc5 fix, by inspection, NPE reported via Play dev console 2014-01-25 18:04:32 -08:00