Commit graph

60 commits

Author SHA1 Message Date
Eric House
49242f78cf more script fixes; move jni code 2017-01-18 07:27:23 -08:00
Eric House
1a830fbff2 use clang instead of gcc for ndk builds
And make changes to C code to fix resulting warning. The .so file
basically works but is not thoroughly tested.
2016-10-25 06:09:40 -07:00
Eric House
929141f36d fix compiler warning 2016-01-01 21:13:35 -08:00
Eric House
938756a34f switch for loop to using C99-style variable declarations; no other change 2014-11-25 06:09:18 -08:00
Eric House
dee75f5a0a don't ref dicts from dmgr_get() 2014-03-10 21:50:06 -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
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
339e784d7c fix compile warnings 2014-02-10 18:23:03 -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
a522266ce4 add message checksumming for android too by making it part of util
(compiled out by default)
2013-07-10 08:05:47 -07:00
Eric House
541fc546ab remove that bit from flags -- since we already do the right thing for it. 2013-04-20 19:46:35 -07:00
Eric House
e4f52c5678 add assert and comment explaining why non-utf-8-aware hack is safe. 2013-04-18 07:15:14 -07:00
Eric House
c8332a9665 load synonyms for specials correctly. So now Catalan works: wordlists
load, and search for "l-l" will find "L·L".
2013-04-14 15:45:23 -07:00
Eric House
cae631eeb0 handle synonyms in non-special tiles for Android: wordlists load and
display, and searching using lower case works.  Specials (e.g. Catalan
changes) not yet supported.
2013-04-14 11:58:11 -07:00
Eric House
75398389b3 Merge branch 'android_branch' into android_dictdb
Conflicts:
	xwords4/android/XWords4/jni/jniutlswrapper.c
2012-09-15 16:36:15 -07:00
Eric House
ee1df7eeb7 replace DeleteLocalRef calls with version that checks for NULL 2012-09-15 15:57:38 -07:00
Eric House
937bde6378 combine two jniutils methods into one 2012-09-15 15:21:31 -07:00
Eric House
aa974be567 Before figuring md5sum (via java callback added recently), use new
callback to see if there's already one in the DB.  Required passing
context into jniutils getter, and passing name into jni dict
constructors that previously didn't need it.
2012-09-13 07:38:08 -07:00
Eric House
3e4384c2a8 when dict doesn't have built-in md5sum, or when in DEBUG code, call
back into java to get a sum.  It's very slow for large dicts, but will
eventually be in a DB so only done once per dict that doesn't have it.
2012-09-13 05:39:44 -07:00
Eric House
077560bcd3 load md5sum if present 2012-09-08 09:42:23 -07:00
Eric House
4ffb4efb0c silence compiler warning 2012-08-30 19:10:52 -07:00
Eric House
08aa9b66e8 also load new desc field in android client, and add jni call to retrieve it 2012-08-26 20:59:17 -07:00
Eric House
464696566d get rid of NODE_CAN_4. Not change to post-compiled code 2012-08-01 20:29:15 -07:00
Eric House
edf13be4c8 I'm getting a crash on 2.1 in the simulator when calling
DeleteGlobalRef then NewGlobalRef on the same ref.  So use a temp to
reverse the order.  May fix reported crash as well.
2012-03-05 20:04:32 -08:00
Eric House
8590aae9b2 fix emacs compile-commands 2012-02-15 18:07:19 -08:00
Eric House
a2b5274b6c on ICS CreateGlobalRef doesn't return the same value as is passed in.
So stop assuming it does!  Fixes multiple crashes on ICS and need to
be ported to android_branch.
2012-02-05 19:12:09 -08:00
Andy2
e1e9a68d8f fix ptr out-of-bounds test. Was failing an empty dict. 2011-11-21 18:04:20 -08:00
Andy2
44c5500ab0 don't crash when empty or corrupt dict file passed in. 2011-11-11 18:29:26 -08:00
Andy2
9ff4596667 fix compile warning by passing ptr to embedded super 2011-11-11 07:42:00 -08:00
Andy2
284bd2d0c4 turn on sanity checking of dicts in download directory, but from
DictLangCache rather than when the directory's walked initially.  Need
to test still with bogus dict and make sure it's never shown.
2011-11-10 19:02:18 -08:00
Andy2
c237717de5 dict_getInfo returns false if the dict doesn't parse so can be used to
test validity of downloaded dict.  Internally (in jni), add lots of
checks that format is correct and we don't run off end of ptr walking
truncated dict.
2011-10-23 14:21:57 -07:00
Andy2
2aa5447301 remove some logging 2011-09-08 19:03:08 -07:00
Andy2
8087153b73 log name of dict being set -- as an easy way to confirm that the right
dicts are getting passed to the jin.
2011-09-03 20:19:51 -07:00
Andy2
84e61f3b3f remove no-op line 2011-08-22 18:43:42 -07:00
Andy2
c41af221b7 fix non-debug compile warning 2011-08-21 11:33:23 -07:00
Andy2
8adb925cca only load and pass in dict as byte[] when path isn't available
(i.e. when it's a builtin), and use mmap in that case.  Works!  Still
need to try a speed test.
2011-08-08 20:27:42 -07:00
Andy2
755d3e5bb2 as first step in using mmap for dictionaries instead of passing byte
arrays into the jni, pass the full file paths in in addition to the
byte arrays.  This isn't possible with the built-in dicts, but does
work for the downloaded ones (which are usually larger).  This checkin
does the mmap and uses memcmp to verify that the bytes are the same as
passed in.  Next step is to not pass the bytes when the path will do
and to actually use the mmap'd ptr.
2011-08-08 19:41:45 -07:00
Andy2
cd844a5bad plug memory leak flushed out by auto-juggle code: null dict doesn't
mean the end of the list.
2011-06-29 18:28:55 -07:00
Andy2
bf67a88c5a expect the array of dicts passed to include the game dict (as part of
changes to always have a game dict and to have player dicts only when
they're different.)
2011-04-25 20:16:38 -07:00
eehouse@eehouse.org
5a21aea2e5 Merge branch 'android_branch' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into android_branch 2011-04-13 06:58:58 -07:00
Eric House
baedbdff2c remove logging 2011-04-12 22:17:56 -07:00
Andy2
002bb40a09 report counts/values using language rather than dictionary name. To
support that, pass lang name from java into jni.
2011-04-11 18:55:42 -07:00
Andy2
c6cd60deef Save and restore per-player dicts; load games that have 'em correctly.
Robots default to BasEnglish dict and humans to CollegeEng.  Add new
per-game default for robot dict.  Still need to deal with language
changes and non-English case in general.
2011-04-11 06:42:17 -07:00
Andy2
977feada82 use a reference to a byte array in the java heap (locking down the
object) rather than allocating a new array in the C heap -- for the
DAWG data of a dictionary.  This can use up to 5% of the java heap for
huge dictionaries, but I'm hoping it fixes a problem reported by a
user of the large German dictionary that seems to involve allocation.
If I'm reading correctly, as long as I stay within 16M (24M or more on
newer devices) I'm sure to get my memory in the java world while it's
less a sure thing in the JNI world (where in addition linux's
aggressive overallocation is used, meaning I'll fail when I try to
swap in memory on write rather than get back NULL from malloc.)
2011-01-31 18:56:20 -08:00
Andy2
53de4eab9b correctly detect empty dict and set top ptr to null. Fixes crash
using empty dicts.
2010-12-17 18:54:27 -08:00
Andy2
ff9e03ef4b read rather than just skipping word count 2010-12-06 07:30:28 -08:00
Andy2
e2bb50ef62 skip new header if present 2010-12-06 07:22:07 -08:00
Eric House
c4cdc24b78 initial changes to add a header to xwd format so that stuff like
number of words can be included.  Changed to build dicts and linux to
open them.  Android still needs to learn.  Also, some of the tools in
dawg/ need to be fixed to read old-format (pre-utf8) .xwd files.
2010-12-05 19:33:10 -08:00
Andy2
cf6d8efb29 new jni method to get lang code. Takes a dict's raw bytes and builds
a dict object just to fetch the code, which is pretty inefficient, so
caching should be added later on the java side.
2010-08-25 06:33:16 -07:00
eehouse
5d31c18658 copy dict name into dict struct so e.g. Counts and Values works 2010-04-23 08:36:20 +00:00