mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 06:20:55 -08:00
Fix omission of updates to child frames on Android
* java/org/gnu/emacs/EmacsView.java (onAttachedFromWindow): Force a layout cycle rather than report exposure immediately. (prepareForLayout): Delete function. * java/org/gnu/emacs/EmacsWindow.java (mapWindow): Remove redundant calls to prepareForLayout. * src/androidterm.c (handle_one_android_event): Do not swap buffers when exposure is registered by a frame only partially updated.
This commit is contained in:
parent
0edacf2aa7
commit
73a58329a6
3 changed files with 22 additions and 23 deletions
|
|
@ -267,13 +267,6 @@ public final class EmacsView extends ViewGroup
|
||||||
return canvas;
|
return canvas;
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void
|
|
||||||
prepareForLayout (int wantedWidth, int wantedHeight)
|
|
||||||
{
|
|
||||||
measuredWidth = wantedWidth;
|
|
||||||
measuredHeight = wantedWidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void
|
protected void
|
||||||
onMeasure (int widthMeasureSpec, int heightMeasureSpec)
|
onMeasure (int widthMeasureSpec, int heightMeasureSpec)
|
||||||
|
|
@ -773,23 +766,30 @@ public final class EmacsView extends ViewGroup
|
||||||
|
|
||||||
/* Collect the bitmap storage; it could be large. */
|
/* Collect the bitmap storage; it could be large. */
|
||||||
Runtime.getRuntime ().gc ();
|
Runtime.getRuntime ().gc ();
|
||||||
|
|
||||||
super.onDetachedFromWindow ();
|
super.onDetachedFromWindow ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void
|
public void
|
||||||
onAttachedToWindow ()
|
onAttachedToWindow ()
|
||||||
|
{
|
||||||
|
synchronized (this)
|
||||||
{
|
{
|
||||||
isAttachedToWindow = true;
|
isAttachedToWindow = true;
|
||||||
|
|
||||||
/* Dirty the bitmap, as it was destroyed when onDetachedFromWindow
|
/* Dirty the bitmap, as it was destroyed when
|
||||||
was called. */
|
onDetachedFromWindow was called. */
|
||||||
bitmapDirty = true;
|
bitmapDirty = true;
|
||||||
|
|
||||||
/* Now expose the view contents again. */
|
/* Rather than unconditionally generating an exposure event upon
|
||||||
EmacsNative.sendExpose (this.window.handle, 0, 0,
|
window attachment, avoid delivering successive Exposure
|
||||||
measuredWidth, measuredHeight);
|
events if the size of the window has changed but is still to
|
||||||
|
be reported by clearing the measured width and height, and
|
||||||
|
requesting another layout computation. */
|
||||||
|
measuredWidth = measuredHeight = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
requestLayout ();
|
||||||
super.onAttachedToWindow ();
|
super.onAttachedToWindow ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -492,7 +492,6 @@ public final class EmacsWindow extends EmacsHandleObject
|
||||||
/* Attach the view. */
|
/* Attach the view. */
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
view.prepareForLayout (width, height);
|
|
||||||
windowManager.addView (view, params);
|
windowManager.addView (view, params);
|
||||||
|
|
||||||
/* Record the window manager being used in the
|
/* Record the window manager being used in the
|
||||||
|
|
@ -517,11 +516,6 @@ public final class EmacsWindow extends EmacsHandleObject
|
||||||
public void
|
public void
|
||||||
run ()
|
run ()
|
||||||
{
|
{
|
||||||
/* Prior to mapping the view, set its measuredWidth and
|
|
||||||
measuredHeight to some reasonable value, in order to
|
|
||||||
avoid excessive bitmap dirtying. */
|
|
||||||
|
|
||||||
view.prepareForLayout (width, height);
|
|
||||||
view.setVisibility (View.VISIBLE);
|
view.setVisibility (View.VISIBLE);
|
||||||
|
|
||||||
if (!getDontFocusOnMap ())
|
if (!getDontFocusOnMap ())
|
||||||
|
|
|
||||||
|
|
@ -1279,6 +1279,11 @@ handle_one_android_event (struct android_display_info *dpyinfo,
|
||||||
{
|
{
|
||||||
expose_frame (f, event->xexpose.x, event->xexpose.y,
|
expose_frame (f, event->xexpose.x, event->xexpose.y,
|
||||||
event->xexpose.width, event->xexpose.height);
|
event->xexpose.width, event->xexpose.height);
|
||||||
|
|
||||||
|
/* Do not display the back buffer if F is yet being
|
||||||
|
updated, as this might trigger premature bitmap
|
||||||
|
reconfiguration. */
|
||||||
|
if (FRAME_ANDROID_COMPLETE_P (f))
|
||||||
show_back_buffer (f);
|
show_back_buffer (f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue