As reported in http://b/issue?id=1398215 MemoryFile did not
munmap(2) the ashmem region after closing it. This
causes the process to leak virtual address space.
This change fixes the problem by calling munmap(2) in
close(). The unmapping is done by a helper method deactivate().
The change also replaces the use of an int for the
file descriptor with a FileDescriptor object to
make sure that we keep track of when the file descriptor
has been closed. I chose to implement it this way because I
will need decativate() and a FileDescriptor object in an
upcoming change that allows sending MemoryFile file
descriptors between processes.
The change also adds a number of tests for the behavior
of close(). The testCloseRead() and testCloseWrite() fail
with the old MemoryFile implementation, and testCloseLeak()
causes a segfault. They all pass now.
These native methods in android.os.MemoryFile throw IOException but their
Java declarations did not include "throws IOException":
native_open(),native_mmap(),native_read(),native_write(),native_pin()
The MemoryFile(String,int) constructor calls native_open and
native_mmap, but does not declare that it throws IOException. The other
Java methods that call the native methods do actually declare that they
throw IOException.
This means that any code that created memory files could throw
an IOException, without knowing about it.
This changes adds "throws IOException" to the native methods and to
the constructor. The constructor change changes the public API, but
maintains binary compatibility. There is some precedent for making
source incompatible source API changes for this sort of thing
(see https://mondrian.corp.google.com/changelist/124214-p9).
The change also makes the native methods static, which
they seem to have been intended to be, as indicated by the
second parameter to the native implementations being named
"clazz".
This requires changes to the Compatibility Test Suite to catch the exceptions.
This is done in https://android-git.corp.google.com/g/2617
Unfortunately that change must be submitted together with this one in order
not to break the build.
Fixes http://b/issue?id=1881829
* changes:
Added the two validations for the memory stress test 1) Set the maximum memory leakage to 150K in 200 loops of playback. 2) Check the pid of the meidaserver.
Merge commit '2542c0a805b144b4c4324a749574d9ba76660557' into donut
* commit '2542c0a805b144b4c4324a749574d9ba76660557':
AI 149346: Replace icon_templates-v1.0.zip with new archive from cnesladek. remove mac-specific files, fix dir name, repack.
having the wrong version. I made the loader print a message to
the log for this, and made the calling code disable gestures
for the listview instead of crashing.
* changes:
Cause the icon drawables to animate automatically by calling setVisible false and then true on the drawables. For an AnimationDrawable, this will trigger the desired behavior of 'automatically' starting the animation, which should have been working to begin with according to the intended design of AnimationDrawable (see http://b/1878430 for my description of my correspondence with Romain). For Donut we'll just do this to work around it, but for a later release we need to decide a better story.
false and then true on the drawables. For an AnimationDrawable, this will
trigger the desired behavior of 'automatically' starting the animation,
which should have been working to begin with according to the intended
design of AnimationDrawable (see http://b/1878430 for my description of
my correspondence with Romain). For Donut we'll just do this to work
around it, but for a later release we need to decide a better story.
The algorithm for this is currently very simple: all persistent processes are
always in the normal scheduling group, all other processes are normal if their
oom_adj is as good or better than VISIBLE, otherwise they are in the background
group.
Note that this currently results in a fair number of log messages about not
being able to change the group, since the system process does not have
permission to do so. Once a kernel fix is in, these will go away and the code
will start working.
- return "const" objects for overloaded operators to disallow constructs like: (a+b) = c;
- don't return references to non-static members, it's not always safe.
- Point.cpp was empty, so get rid of it
Merge commit '522ab34d3821dc760e10f4bdf3fbdb558c6a1d01' into donut
* commit '522ab34d3821dc760e10f4bdf3fbdb558c6a1d01':
AI 149272: Mark 1.5r1 as a "non-current" release, with pointer to 1.5r2.
Merge commit '1d6cb270a53e45e6370dfdd60954269c76b09d28' into donut
* commit '1d6cb270a53e45e6370dfdd60954269c76b09d28':
AI 149267: Add the images for icon guidelines doc
* changes:
Remove dimmed background (and accompanying animation) for global search, since we should never really see that background anyway, and I suspect the animation is using a significant amount of CPU.