diff options
author | Po Lu <luangruo@yahoo.com> | 2024-05-08 16:03:49 +0800 |
---|---|---|
committer | Po Lu <luangruo@yahoo.com> | 2024-05-08 16:03:49 +0800 |
commit | e020f4e9ce5d98438033fea098d943c311b0fa3d (patch) | |
tree | 9d7828ac6f6abe3405c9432bc3c4c1018d5ab54a /java | |
parent | d0b36be59ab9840eebbda45609bc8c075ece40c0 (diff) | |
download | emacs-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.java | 4 | ||||
-rw-r--r-- | java/org/gnu/emacs/EmacsSdk11Clipboard.java | 30 | ||||
-rw-r--r-- | java/org/gnu/emacs/EmacsSdk8Clipboard.java | 4 |
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; } |