mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-02 18:21:19 -08:00
Add extra thread-related checking
* java/org/gnu/emacs/EmacsService.java (EmacsService) (checkEmacsThread): New function. (fillPolygon, drawRectangle, drawLine, drawPoint, copyArea) (clearArea): * java/org/gnu/emacs/EmacsThread.java (EmacsThread): * java/org/gnu/emacs/EmacsView.java (EmacsView, swapBuffers): Call where appropriate.
This commit is contained in:
parent
d33bf0a0af
commit
327d2d0131
3 changed files with 36 additions and 1 deletions
|
|
@ -100,6 +100,10 @@ public final class EmacsService extends Service
|
|||
information. */
|
||||
public static final boolean DEBUG_IC = false;
|
||||
|
||||
/* Flag that says whether or not to perform extra checks on threads
|
||||
performing drawing calls. */
|
||||
private static final boolean DEBUG_THREADS = false;
|
||||
|
||||
/* Return the directory leading to the directory in which native
|
||||
library files are stored on behalf of CONTEXT. */
|
||||
|
||||
|
|
@ -309,10 +313,29 @@ public final class EmacsService extends Service
|
|||
syncRunnable (runnable);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void
|
||||
checkEmacsThread ()
|
||||
{
|
||||
if (DEBUG_THREADS)
|
||||
{
|
||||
if (Thread.currentThread () instanceof EmacsThread)
|
||||
return;
|
||||
|
||||
throw new RuntimeException ("Emacs thread function"
|
||||
+ " called from other thread!");
|
||||
}
|
||||
}
|
||||
|
||||
/* These drawing functions must only be called from the Emacs
|
||||
thread. */
|
||||
|
||||
public void
|
||||
fillRectangle (EmacsDrawable drawable, EmacsGC gc,
|
||||
int x, int y, int width, int height)
|
||||
{
|
||||
checkEmacsThread ();
|
||||
EmacsFillRectangle.perform (drawable, gc, x, y,
|
||||
width, height);
|
||||
}
|
||||
|
|
@ -321,6 +344,7 @@ public final class EmacsService extends Service
|
|||
fillPolygon (EmacsDrawable drawable, EmacsGC gc,
|
||||
Point points[])
|
||||
{
|
||||
checkEmacsThread ();
|
||||
EmacsFillPolygon.perform (drawable, gc, points);
|
||||
}
|
||||
|
||||
|
|
@ -328,6 +352,7 @@ public final class EmacsService extends Service
|
|||
drawRectangle (EmacsDrawable drawable, EmacsGC gc,
|
||||
int x, int y, int width, int height)
|
||||
{
|
||||
checkEmacsThread ();
|
||||
EmacsDrawRectangle.perform (drawable, gc, x, y,
|
||||
width, height);
|
||||
}
|
||||
|
|
@ -336,6 +361,7 @@ public final class EmacsService extends Service
|
|||
drawLine (EmacsDrawable drawable, EmacsGC gc,
|
||||
int x, int y, int x2, int y2)
|
||||
{
|
||||
checkEmacsThread ();
|
||||
EmacsDrawLine.perform (drawable, gc, x, y,
|
||||
x2, y2);
|
||||
}
|
||||
|
|
@ -344,6 +370,7 @@ public final class EmacsService extends Service
|
|||
drawPoint (EmacsDrawable drawable, EmacsGC gc,
|
||||
int x, int y)
|
||||
{
|
||||
checkEmacsThread ();
|
||||
EmacsDrawPoint.perform (drawable, gc, x, y);
|
||||
}
|
||||
|
||||
|
|
@ -353,6 +380,7 @@ public final class EmacsService extends Service
|
|||
int srcX, int srcY, int width, int height, int destX,
|
||||
int destY)
|
||||
{
|
||||
checkEmacsThread ();
|
||||
EmacsCopyArea.perform (srcDrawable, gc, dstDrawable,
|
||||
srcX, srcY, width, height, destX,
|
||||
destY);
|
||||
|
|
@ -361,6 +389,7 @@ public final class EmacsService extends Service
|
|||
public void
|
||||
clearWindow (EmacsWindow window)
|
||||
{
|
||||
checkEmacsThread ();
|
||||
window.clearWindow ();
|
||||
}
|
||||
|
||||
|
|
@ -368,6 +397,7 @@ public final class EmacsService extends Service
|
|||
clearArea (EmacsWindow window, int x, int y, int width,
|
||||
int height)
|
||||
{
|
||||
checkEmacsThread ();
|
||||
window.clearArea (x, y, width, height);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ import java.util.Arrays;
|
|||
import android.os.Build;
|
||||
import android.util.Log;
|
||||
|
||||
public class EmacsThread extends Thread
|
||||
public final class EmacsThread extends Thread
|
||||
{
|
||||
private static final String TAG = "EmacsThread";
|
||||
|
||||
|
|
|
|||
|
|
@ -338,6 +338,7 @@ public final class EmacsView extends ViewGroup
|
|||
public void
|
||||
damageRect (Rect damageRect)
|
||||
{
|
||||
EmacsService.checkEmacsThread ();
|
||||
damageRegion.union (damageRect);
|
||||
}
|
||||
|
||||
|
|
@ -351,6 +352,10 @@ public final class EmacsView extends ViewGroup
|
|||
Rect damageRect;
|
||||
Bitmap bitmap;
|
||||
|
||||
/* Make sure this function is called only from the Emacs
|
||||
thread. */
|
||||
EmacsService.checkEmacsThread ();
|
||||
|
||||
damageRect = null;
|
||||
|
||||
/* Now see if there is a damage region. */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue