[PATCH xim] modules/im/ximcp: Send display and screen number to XIM server
Takao Fujiwara
tfujiwar at redhat.com
Tue Mar 14 04:39:25 UTC 2017
Hi,
Would you integrate the patch?
Fujiwara
On 02/18/17 12:22, Takao Fujiwara-san wrote:
> Enables that client application sends its screen number to XIM server.
> In ZaphodHeads environment, XIM server needs to know the screen
> number to launch the lookup window in the right screen.
> I think this way keeps the back compatibility.
>
> Signed-off-by: Takao Fujiwara <takao.fujiwara1 at gmail.com>
> ---
> modules/im/ximcp/imDefIm.c | 32 ++++++++++++++++++++++++++++++++
> src/xlibi18n/XimProto.h | 2 +-
> 2 files changed, 33 insertions(+), 1 deletion(-)
>
> diff --git a/modules/im/ximcp/imDefIm.c b/modules/im/ximcp/imDefIm.c
> index 9e877c0..d0b8368 100644
> --- a/modules/im/ximcp/imDefIm.c
> +++ b/modules/im/ximcp/imDefIm.c
> @@ -794,6 +794,35 @@ _XimOpenCheck(
> return False;
> }
>
> +static INT16
> +_XimSetDisplayNumber(
> + Xim im,
> + CARD8 *buf_b,
> + INT16 len)
> +{
> + const char *display_string = DisplayString(im->core.display);
> + buf_b[len] = 0;
> + buf_b[len+1] = 0;
> +
> + if (display_string && (display_string = strchr(display_string, ':')) != NULL) {
> + display_string++;
> + if (*display_string != '\0') {
> + int number = atoi(display_string);
> + buf_b[len] = (number < 0) ? 0 : (number % 256);
> + display_string++;
> + if ((display_string = strchr(display_string, '.')) != NULL) {
> + display_string++;
> + if (*display_string != '\0') {
> + number = atoi(display_string);
> + buf_b[len+1] = (number < 0) ? 0 : (number % 256);
> + }
> + }
> + }
> + }
> +
> + return sizeof(CARD8) * 2;
> +}
> +
> static Bool
> _XimOpen(
> Xim im)
> @@ -803,6 +832,7 @@ _XimOpen(
> CARD8 *buf_b = &buf[XIM_HEADER_SIZE];
> CARD16 *buf_s;
> INT16 len;
> + INT16 version_len;
> CARD32 reply32[BUFSIZE/4];
> char *reply = (char *)reply32;
> XPointer preply;
> @@ -816,6 +846,8 @@ _XimOpen(
> (void)strcpy((char *)&buf_b[1], locale_name); /* locale name */
> len += sizeof(BYTE); /* sizeof length */
> XIM_SET_PAD(buf_b, len); /* pad */
> + version_len = _XimSetDisplayNumber(im, buf_b, len);
> + len += (version_len + XIM_PAD(version_len));
>
> _XimSetHeader((XPointer)buf, XIM_OPEN, 0, &len);
> if (!(_XimWrite(im, len, (XPointer)buf)))
> diff --git a/src/xlibi18n/XimProto.h b/src/xlibi18n/XimProto.h
> index 6b0096d..881f975 100644
> --- a/src/xlibi18n/XimProto.h
> +++ b/src/xlibi18n/XimProto.h
> @@ -47,7 +47,7 @@ PERFORMANCE OF THIS SOFTWARE.
> * Xim implementation revision
> */
> #define PROTOCOLMAJORVERSION 1
> -#define PROTOCOLMINORVERSION 0
> +#define PROTOCOLMINORVERSION 1
>
> /*
> * Major Protocol number
>
More information about the xorg-devel
mailing list