summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2024-05-08 16:03:49 +0800
committerPo Lu <luangruo@yahoo.com>2024-05-08 16:03:49 +0800
commite020f4e9ce5d98438033fea098d943c311b0fa3d (patch)
tree9d7828ac6f6abe3405c9432bc3c4c1018d5ab54a /java
parentd0b36be59ab9840eebbda45609bc8c075ece40c0 (diff)
downloademacs-e020f4e9ce5d98438033fea098d943c311b0fa3d.tar.gz
Fix hang after failed yank-media on Android
* java/org/gnu/emacs/EmacsClipboard.java (getClipboardTargets) (getClipboardData): * java/org/gnu/emacs/EmacsSdk11Clipboard.java (getClipboardTargets, getClipboardData): * java/org/gnu/emacs/EmacsSdk8Clipboard.java (getClipboardTargets, getClipboardData): Return string data as Strings rather than byte arrays. * src/androidselect.c (android_init_emacs_clipboard) (Fandroid_get_clipboard_targets): Adjust to match. (extract_fd_offsets): Remove duplicated semicolon. (Fandroid_get_clipboard_data): Call unblock_input before returning if extract_fd_offsets fails.
Diffstat (limited to 'java')
-rw-r--r--java/org/gnu/emacs/EmacsClipboard.java4
-rw-r--r--java/org/gnu/emacs/EmacsSdk11Clipboard.java30
-rw-r--r--java/org/gnu/emacs/EmacsSdk8Clipboard.java4
3 files changed, 11 insertions, 27 deletions
diff --git a/java/org/gnu/emacs/EmacsClipboard.java b/java/org/gnu/emacs/EmacsClipboard.java
index f27d96129ef..86553f478ed 100644
--- a/java/org/gnu/emacs/EmacsClipboard.java
+++ b/java/org/gnu/emacs/EmacsClipboard.java
@@ -32,8 +32,8 @@ public abstract class EmacsClipboard
public abstract boolean clipboardExists ();
public abstract byte[] getClipboard ();
- public abstract byte[][] getClipboardTargets ();
- public abstract AssetFileDescriptor getClipboardData (byte[] target);
+ public abstract String[] getClipboardTargets ();
+ public abstract AssetFileDescriptor getClipboardData (String target);
/* Create the correct kind of clipboard for this system. */
diff --git a/java/org/gnu/emacs/EmacsSdk11Clipboard.java b/java/org/gnu/emacs/EmacsSdk11Clipboard.java
index 71381b0f114..dfc714476ec 100644
--- a/java/org/gnu/emacs/EmacsSdk11Clipboard.java
+++ b/java/org/gnu/emacs/EmacsSdk11Clipboard.java
@@ -172,12 +172,12 @@ public final class EmacsSdk11Clipboard extends EmacsClipboard
clipboard, or NULL if there are none. */
@Override
- public byte[][]
+ public String[]
getClipboardTargets ()
{
ClipData clip;
ClipDescription description;
- byte[][] typeArray;
+ String[] typeArray;
int i;
/* N.B. that Android calls the clipboard the ``primary clip''; it
@@ -189,17 +189,10 @@ public final class EmacsSdk11Clipboard extends EmacsClipboard
description = clip.getDescription ();
i = description.getMimeTypeCount ();
- typeArray = new byte[i][i];
+ typeArray = new String[i];
- try
- {
- for (i = 0; i < description.getMimeTypeCount (); ++i)
- typeArray[i] = description.getMimeType (i).getBytes ("UTF-8");
- }
- catch (UnsupportedEncodingException exception)
- {
- return null;
- }
+ for (i = 0; i < description.getMimeTypeCount (); ++i)
+ typeArray[i] = description.getMimeType (i);
return typeArray;
}
@@ -219,26 +212,17 @@ public final class EmacsSdk11Clipboard extends EmacsClipboard
@Override
public AssetFileDescriptor
- getClipboardData (byte[] target)
+ getClipboardData (String target)
{
ClipData data;
String mimeType;
AssetFileDescriptor assetFd;
Uri uri;
- /* Decode the target given by Emacs. */
- try
- {
- mimeType = new String (target, "UTF-8");
- }
- catch (UnsupportedEncodingException exception)
- {
- return null;
- }
-
/* Now obtain the clipboard data and the data corresponding to
that MIME type. */
+ mimeType = target;
data = manager.getPrimaryClip ();
if (data == null || data.getItemCount () < 1)
diff --git a/java/org/gnu/emacs/EmacsSdk8Clipboard.java b/java/org/gnu/emacs/EmacsSdk8Clipboard.java
index 3d0504b1924..344ec6f7997 100644
--- a/java/org/gnu/emacs/EmacsSdk8Clipboard.java
+++ b/java/org/gnu/emacs/EmacsSdk8Clipboard.java
@@ -122,7 +122,7 @@ public final class EmacsSdk8Clipboard extends EmacsClipboard
clipboard, or NULL if there are none. */
@Override
- public byte[][]
+ public String[]
getClipboardTargets ()
{
return null;
@@ -143,7 +143,7 @@ public final class EmacsSdk8Clipboard extends EmacsClipboard
@Override
public AssetFileDescriptor
- getClipboardData (byte[] target)
+ getClipboardData (String target)
{
return null;
}