From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Qiutum Newsgroups: gmane.emacs.bugs Subject: bug#67968: [PATCH] A small patch to make emacs support transparent image (png, webp, svg) Date: Fri, 22 Dec 2023 19:38:09 +0800 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000393c07060d17a79d" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="28251"; mail-complaints-to="usenet@ciao.gmane.io" To: 67968@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Dec 22 12:47:21 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rGdzt-0007Bm-B1 for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 22 Dec 2023 12:47:21 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rGdzW-00042k-VW; Fri, 22 Dec 2023 06:46:58 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rGdzW-00042K-9B for bug-gnu-emacs@gnu.org; Fri, 22 Dec 2023 06:46:58 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rGdzV-0003df-Uk for bug-gnu-emacs@gnu.org; Fri, 22 Dec 2023 06:46:58 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rGdza-0001AU-4i for bug-gnu-emacs@gnu.org; Fri, 22 Dec 2023 06:47:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Qiutum Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Dec 2023 11:47:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 67968 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.17032455783990 (code B ref -1); Fri, 22 Dec 2023 11:47:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 22 Dec 2023 11:46:18 +0000 Original-Received: from localhost ([127.0.0.1]:46150 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGdyr-000113-H5 for submit@debbugs.gnu.org; Fri, 22 Dec 2023 06:46:18 -0500 Original-Received: from lists.gnu.org ([2001:470:142::17]:42632) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGdrR-0006mF-OU for submit@debbugs.gnu.org; Fri, 22 Dec 2023 06:38:38 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rGdrG-0002cw-86 for bug-gnu-emacs@gnu.org; Fri, 22 Dec 2023 06:38:26 -0500 Original-Received: from mail-lj1-x230.google.com ([2a00:1450:4864:20::230]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rGdrD-00025N-Qb for bug-gnu-emacs@gnu.org; Fri, 22 Dec 2023 06:38:25 -0500 Original-Received: by mail-lj1-x230.google.com with SMTP id 38308e7fff4ca-2cc6c028229so20755691fa.2 for ; Fri, 22 Dec 2023 03:38:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703245101; x=1703849901; darn=gnu.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=TJNWiNjesl2gkaaKEsvVbxUtkw5Z2M61e8eMM3oox40=; b=DuVFJcKTHSBVvMj1R7giAUkcEdGBwaNgg25vNk4DQzYXJFwRgy9Biv4OwuMeEuFJQc tCPw6LzSJYJqBtKR+OHHDcwzI6+9knKjl/4xHeGO+pr+xkCbw3WL+2CrTrqghyPQa+m6 rpFssXT1Os/G92uLVBpsCiO1ClNigiilSVZvqFNO6vapC3vR4AkOnzXPdUsVf12Ji/Qv y8I1Yfj6MpBlZy+/92z4KC06RtJ+G9FXMKrZvweVyf6ib13zcPCpQylBFRBMYiinA7hk 21JdX1t1lq6bSW+1eedo6v3eBT2RvlNaRMDZOUC91L2/Yb8dSNdxJ8BQP4BRMXbFIovp Uw2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703245101; x=1703849901; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=TJNWiNjesl2gkaaKEsvVbxUtkw5Z2M61e8eMM3oox40=; b=nW1c8Oq6keaR7k1Or5Kfix4ayMvvcIncFLqxGZoyUM03dNzqEW069YW6Qi1NzMf93d QAgvxDXUuVT7Yher2yRPHI1KshhL4xSJRdYjCXnbwW+9IlUtCXFpLhYJfkFoSCh0CtEY FBHjH5/MUdtiyyc5WiqsDtqGu2Ko+AdenmWBaoMfW/5j50NWAncr0rDZTgVmdZY0lz3O C8sy73Ya3GkhpGXxPMZbcUqME4lB3fwbrpXKIv7Irh2DnwzFMtBn6sJpn8HzG3MLbPKf La3aVRYY8r3lO94e0yd3u5bvAU0l9P1onM/x1RWXtiQsB/H6TDoKYC+ar1S2Efbe9L7H h06Q== X-Gm-Message-State: AOJu0YydccrV5Tvai9uGJ1wrmxaIKe/5si/GT6nXBi3hUj3t62u1eVyu uD/86H77GahyuGX2PzsrbcMO8ioS37YcLQjHrJNp2xMeOYm+hA== X-Google-Smtp-Source: AGHT+IHsftjEYVx+Rd2L2sixd9U/3Ol1vPcuT15xSxrvAFsWZPXva5KXBENIxri+axIpKxZfDa/W1SF/8FM7gdZtYeo= X-Received: by 2002:a2e:874b:0:b0:2cc:70f8:a7e0 with SMTP id q11-20020a2e874b000000b002cc70f8a7e0mr565843ljj.93.1703245101213; Fri, 22 Dec 2023 03:38:21 -0800 (PST) In-Reply-To: Received-SPF: pass client-ip=2a00:1450:4864:20::230; envelope-from=zh4710jj@gmail.com; helo=mail-lj1-x230.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 22 Dec 2023 06:46:15 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:276660 Archived-At: --000000000000393c07060d17a79d Content-Type: multipart/alternative; boundary="000000000000393c06060d17a79b" --000000000000393c06060d17a79b Content-Type: text/plain; charset="UTF-8" Hi everyone, Recently, I've been reading the code of image.c and wondering how to make emacs support transparent image. Then I find that a small change on the src/image.c can make it worked (and wonder why this have not been solved since the solution is so simple). This patch can support the transparent png, webp and svg. The core of the patch is to change the code, PUT_PIXEL (mask_img, x, y, *p > 0 ? PIX_MASK_DRAW : PIX_MASK_RETAIN); to PUT_PIXEL (mask_img, x, y, *p > 0 ? *p : PIX_MASK_RETAIN); Then all worked like a magic. I have checked my patch in linux by default configure option "../configure" for dwm and pgtk build for hyprland, both are fine. I don't know whether it could support other platforms since I don't have them. Please check my patch and happy to hear comments. Best regards, Zhang --000000000000393c06060d17a79b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi everyone,

Recently, I've been = reading the code of image.c and wondering how to make emacs support=C2=A0tr= ansparent image. Then I find that a small change on the src/image.c can mak= e it worked=C2=A0(and wonder why this have not=C2=A0been solved since the= =C2=A0solution is so simple).

This patch can suppo= rt=C2=A0the transparent=C2=A0png, webp and svg. The core of the patch is to= change the code,

=C2=A0PUT_PIXEL (mask_img, x, y,= *p > 0 ? PIX_MASK_DRAW : PIX_MASK_RETAIN);=C2=A0 =C2=A0=C2=A0

to=C2=A0

=C2=A0PUT_PIXEL (mask_img= , x, y, *p > 0 ? *p : PIX_MASK_RETAIN);=C2=A0 =C2=A0

Then all worked like a magic.

I have ch= ecked my patch in linux by default configure option "../configure"= ; for dwm and pgtk build for hyprland, both are fine. I don't know whet= her it could support other platforms since I don't have them.

Please check my patch and happy to hear comments.

Best r= egards,
Zhang
--000000000000393c06060d17a79b-- --000000000000393c07060d17a79d Content-Type: application/x-patch; name="support-image-transparent.patch" Content-Disposition: attachment; filename="support-image-transparent.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lqgau6q10 ZGlmZiAtLWdpdCBhL3NyYy9pbWFnZS5jIGIvc3JjL2ltYWdlLmMKaW5kZXggODRkYjliZmIzYjgu LmQ1OTM1MmIzM2NlIDEwMDY0NAotLS0gYS9zcmMvaW1hZ2UuYworKysgYi9zcmMvaW1hZ2UuYwpA QCAtODA1NCw3ICs4MDU0LDYgQEAgcG5nX2xvYWRfYm9keSAoc3RydWN0IGZyYW1lICpmLCBzdHJ1 Y3QgaW1hZ2UgKmltZywgc3RydWN0IHBuZ19sb2FkX2NvbnRleHQgKmMpCiAgIGludCBiaXRfZGVw dGgsIGNvbG9yX3R5cGUsIGludGVybGFjZV90eXBlOwogICBwbmdfYnl0ZSBjaGFubmVsczsKICAg cG5nX3VpbnRfMzIgcm93X2J5dGVzOwotICBib29sIHRyYW5zcGFyZW50X3A7CiAgIHN0cnVjdCBw bmdfbWVtb3J5X3N0b3JhZ2UgdGJyOyAgLyogRGF0YSB0byBiZSByZWFkICovCiAgIHB0cmRpZmZf dCBuYnl0ZXM7CiAgIEVtYWNzX1BpeF9Db250YWluZXIgeGltZywgbWFza19pbWcgPSBOVUxMOwpA QCAtODE4MywyNSArODE4Miw2IEBAIHBuZ19sb2FkX2JvZHkgKHN0cnVjdCBmcmFtZSAqZiwgc3Ry dWN0IGltYWdlICppbWcsIHN0cnVjdCBwbmdfbG9hZF9jb250ZXh0ICpjKQogICBpZiAoIWltYWdl X2NyZWF0ZV94X2ltYWdlX2FuZF9waXhtYXAgKGYsIGltZywgd2lkdGgsIGhlaWdodCwgMCwgJnhp bWcsIDApKQogICAgIGdvdG8gZXJyb3I7CiAKLSAgLyogSWYgaW1hZ2UgY29udGFpbnMgc2ltcGx5 IHRyYW5zcGFyZW5jeSBkYXRhLCB3ZSBwcmVmZXIgdG8KLSAgICAgY29uc3RydWN0IGEgY2xpcHBp bmcgbWFzay4gICovCi0gIHRyYW5zcGFyZW50X3AgPSBmYWxzZTsKLSMgaWZkZWYgUE5HX3RSTlNf U1VQUE9SVEVECi0gIHBuZ19ieXRlcCB0cmFuc19hbHBoYTsKLSAgaW50IG51bV90cmFuczsKLSAg aWYgKHBuZ19nZXRfdFJOUyAocG5nX3B0ciwgaW5mb19wdHIsICZ0cmFuc19hbHBoYSwgJm51bV90 cmFucywgTlVMTCkpCi0gICAgewotICAgICAgdHJhbnNwYXJlbnRfcCA9IHRydWU7Ci0gICAgICBp ZiAodHJhbnNfYWxwaGEpCi0JZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fdHJhbnM7IGkrKykKLQkg IGlmICgwIDwgdHJhbnNfYWxwaGFbaV0gJiYgdHJhbnNfYWxwaGFbaV0gPCAyNTUpCi0JICAgIHsK LQkgICAgICB0cmFuc3BhcmVudF9wID0gZmFsc2U7Ci0JICAgICAgYnJlYWs7Ci0JICAgIH0KLSAg ICB9Ci0jIGVuZGlmCi0KICAgLyogVGhpcyBmdW5jdGlvbiBpcyBlYXNpZXIgdG8gd3JpdGUgaWYg d2Ugb25seSBoYXZlIHRvIGhhbmRsZQogICAgICBvbmUgZGF0YSBmb3JtYXQ6IFJHQiBvciBSR0JB IHdpdGggOCBiaXRzIHBlciBjaGFubmVsLiAgTGV0J3MKICAgICAgdHJhbnNmb3JtIG90aGVyIGZv cm1hdHMgaW50byB0aGF0IGZvcm1hdC4gICovCkBAIC04MjE5LDM5ICs4MTk5LDYgQEAgcG5nX2xv YWRfYm9keSAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZywgc3RydWN0IHBuZ19s b2FkX2NvbnRleHQgKmMpCiAgICAgICB8fCBjb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX0dS QVlfQUxQSEEpCiAgICAgcG5nX3NldF9ncmF5X3RvX3JnYiAocG5nX3B0cik7CiAKLSAgLyogSGFu ZGxlIGFscGhhIGNoYW5uZWwgYnkgY29tYmluaW5nIHRoZSBpbWFnZSB3aXRoIGEgYmFja2dyb3Vu ZAotICAgICBjb2xvci4gIERvIHRoaXMgb25seSBpZiBhIHJlYWwgYWxwaGEgY2hhbm5lbCBpcyBz dXBwbGllZC4gIEZvcgotICAgICBzaW1wbGUgdHJhbnNwYXJlbmN5LCB3ZSBwcmVmZXIgYSBjbGlw cGluZyBtYXNrLiAgKi8KLSAgaWYgKCF0cmFuc3BhcmVudF9wKQotICAgIHsKLSAgICAgIExpc3Bf T2JqZWN0IHNwZWNpZmllZF9iZwotCT0gaW1hZ2Vfc3BlY192YWx1ZSAoaW1nLT5zcGVjLCBRQ2Jh Y2tncm91bmQsIE5VTEwpOwotICAgICAgRW1hY3NfQ29sb3IgY29sb3I7Ci0KLSAgICAgIC8qIElm IHRoZSB1c2VyIHNwZWNpZmllZCBhIGNvbG9yLCB0cnkgdG8gdXNlIGl0OyBpZiBub3QsIHVzZSB0 aGUKLQkgY3VycmVudCBmcmFtZSBiYWNrZ3JvdW5kLCBpZ25vcmluZyBhbnkgZGVmYXVsdCBiYWNr Z3JvdW5kCi0JIGNvbG9yIHNldCBieSB0aGUgaW1hZ2UuICAqLwotICAgICAgaWYgKFNUUklOR1Ag KHNwZWNpZmllZF9iZykKLQkgID8gRlJBTUVfVEVSTUlOQUwgKGYpLT5kZWZpbmVkX2NvbG9yX2hv b2sgKGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU1NEQVRBIChzcGVjaWZpZWRfYmcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZjb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSkKLQkgIDogKEZSQU1FX1RFUk1JTkFM IChmKS0+cXVlcnlfZnJhbWVfYmFja2dyb3VuZF9jb2xvciAoZiwgJmNvbG9yKSwKLSAgICAgICAg ICAgICB0cnVlKSkKLQkvKiBUaGUgdXNlciBzcGVjaWZpZWQgYDpiYWNrZ3JvdW5kJywgdXNlIHRo YXQuICAqLwotCXsKLQkgIGludCBzaGlmdCA9IGJpdF9kZXB0aCA9PSAxNiA/IDAgOiA4OwotCSAg cG5nX2NvbG9yXzE2IGJnID0geyAwIH07Ci0JICBiZy5yZWQgPSBjb2xvci5yZWQgPj4gc2hpZnQ7 Ci0JICBiZy5ncmVlbiA9IGNvbG9yLmdyZWVuID4+IHNoaWZ0OwotCSAgYmcuYmx1ZSA9IGNvbG9y LmJsdWUgPj4gc2hpZnQ7Ci0KLQkgIHBuZ19zZXRfYmFja2dyb3VuZCAocG5nX3B0ciwgJmJnLAot CQkJICAgICAgUE5HX0JBQ0tHUk9VTkRfR0FNTUFfU0NSRUVOLCAwLCAxLjApOwotCX0KLSAgICB9 Ci0KICAgcG5nX3NldF9pbnRlcmxhY2VfaGFuZGxpbmcgKHBuZ19wdHIpOwogICBwbmdfcmVhZF91 cGRhdGVfaW5mbyAocG5nX3B0ciwgaW5mb19wdHIpOwogCkBAIC04Mjg3LDcgKzgyMzQsNiBAQCBw bmdfbG9hZF9ib2R5IChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLCBzdHJ1Y3Qg cG5nX2xvYWRfY29udGV4dCAqYykKICAgLyogQ3JlYXRlIGFuIGltYWdlIGFuZCBwaXhtYXAgc2Vy dmluZyBhcyBtYXNrIGlmIHRoZSBQTkcgaW1hZ2UKICAgICAgY29udGFpbnMgYW4gYWxwaGEgY2hh bm5lbC4gICovCiAgIGlmIChjaGFubmVscyA9PSA0Ci0gICAgICAmJiB0cmFuc3BhcmVudF9wCiAg ICAgICAmJiAhaW1hZ2VfY3JlYXRlX3hfaW1hZ2VfYW5kX3BpeG1hcCAoZiwgaW1nLCB3aWR0aCwg aGVpZ2h0LCAxLAogCQkJCQkgICAmbWFza19pbWcsIDEpKQogICAgIHsKQEAgLTgzMzAsNyArODI3 Niw3IEBAIHBuZ19sb2FkX2JvZHkgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcs IHN0cnVjdCBwbmdfbG9hZF9jb250ZXh0ICpjKQogCSAgaWYgKGNoYW5uZWxzID09IDQpCiAJICAg IHsKIAkgICAgICBpZiAobWFza19pbWcpCi0JCVBVVF9QSVhFTCAobWFza19pbWcsIHgsIHksICpw ID4gMCA/IFBJWF9NQVNLX0RSQVcgOiBQSVhfTUFTS19SRVRBSU4pOworCQlQVVRfUElYRUwgKG1h c2tfaW1nLCB4LCB5LCAqcCA+IDAgPyAqcCA6IFBJWF9NQVNLX1JFVEFJTik7CiAJICAgICAgKytw OwogCSAgICB9CiAJfQpAQCAtMTA0NjIsMzYgKzEwNDA4LDIwIEBAIHdlYnBfbG9hZCAoc3RydWN0 IGZyYW1lICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZykKICAgICB9CiAKICAgLyogQ3JlYXRlIHRoZSB4 IGltYWdlIGFuZCBwaXhtYXAuICAqLwotICBFbWFjc19QaXhfQ29udGFpbmVyIHhpbWc7CisgIEVt YWNzX1BpeF9Db250YWluZXIgeGltZywgbWFza19pbWcgPSBOVUxMOwogICBpZiAoIWltYWdlX2Ny ZWF0ZV94X2ltYWdlX2FuZF9waXhtYXAgKGYsIGltZywgd2lkdGgsIGhlaWdodCwgMCwgJnhpbWcs IGZhbHNlKSkKICAgICBnb3RvIHdlYnBfZXJyb3IyOwogCi0gIC8qIEZpbmQgdGhlIGJhY2tncm91 bmQgdG8gdXNlIGlmIHRoZSBXZWJQIGltYWdlIGNvbnRhaW5zIGFuIGFscGhhCi0gICAgIGNoYW5u ZWwuICAqLwotICBFbWFjc19Db2xvciBiZ19jb2xvcjsKLSAgaWYgKGZlYXR1cmVzLmhhc19hbHBo YSkKLSAgICB7Ci0gICAgICBMaXNwX09iamVjdCBzcGVjaWZpZWRfYmcKLQk9IGltYWdlX3NwZWNf dmFsdWUgKGltZy0+c3BlYywgUUNiYWNrZ3JvdW5kLCBOVUxMKTsKLQotICAgICAgLyogSWYgdGhl IHVzZXIgc3BlY2lmaWVkIGEgY29sb3IsIHRyeSB0byB1c2UgaXQ7IGlmIG5vdCwgdXNlIHRoZQot CSBjdXJyZW50IGZyYW1lIGJhY2tncm91bmQsIGlnbm9yaW5nIGFueSBkZWZhdWx0IGJhY2tncm91 bmQKLQkgY29sb3Igc2V0IGJ5IHRoZSBpbWFnZS4gICovCi0gICAgICBpZiAoU1RSSU5HUCAoc3Bl Y2lmaWVkX2JnKSkKLQlGUkFNRV9URVJNSU5BTCAoZiktPmRlZmluZWRfY29sb3JfaG9vayAoZiwK LQkJCQkJCVNTREFUQSAoc3BlY2lmaWVkX2JnKSwKLQkJCQkJCSZiZ19jb2xvciwKLQkJCQkJCWZh bHNlLAotCQkJCQkJZmFsc2UpOwotICAgICAgZWxzZQotCUZSQU1FX1RFUk1JTkFMIChmKS0+cXVl cnlfZnJhbWVfYmFja2dyb3VuZF9jb2xvciAoZiwgJmJnX2NvbG9yKTsKLSAgICAgIGJnX2NvbG9y LnJlZCAgID4+PSA4OwotICAgICAgYmdfY29sb3IuZ3JlZW4gPj49IDg7Ci0gICAgICBiZ19jb2xv ci5ibHVlICA+Pj0gODsKKyAgaWYgKGZlYXR1cmVzLmhhc19hbHBoYQorICAgICAgJiYgIWltYWdl X2NyZWF0ZV94X2ltYWdlX2FuZF9waXhtYXAgKGYsIGltZywgd2lkdGgsIGhlaWdodCwgMSwKKwkJ CQkJICAgJm1hc2tfaW1nLCB0cnVlKSkKKyAgICB7CisgICAgICBpbWFnZV9kZXN0cm95X3hfaW1h Z2UgKHhpbWcpOworICAgICAgaW1hZ2VfY2xlYXJfaW1hZ2VfMSAoZiwgaW1nLCBDTEVBUl9JTUFH RV9QSVhNQVApOworICAgICAgZ290byB3ZWJwX2Vycm9yMjsKICAgICB9CiAKLSAgLyogRmlsbCB0 aGUgWCBpbWFnZSBmcm9tIFdlYlAgZGF0YS4gICovCi0KKyAgLyogRmlsbCB0aGUgWCBpbWFnZSBh bmQgbWFzayBmcm9tIFdlYlAgZGF0YS4gICovCiAgIGluaXRfY29sb3JfdGFibGUgKCk7CiAKICAg aW1nLT5jb3JuZXJzW1RPUF9DT1JORVJdID0gMDsKQEAgLTEwNTA2LDI0ICsxMDQzNiwxNiBAQCB3 ZWJwX2xvYWQgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcpCiAgICAgewogICAg ICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4KQogCXsKLQkgIGludCByLCBnLCBiOwot CSAgLyogVGhlIFdlYlAgYWxwaGEgY2hhbm5lbCBhbGxvd3MgMjU2IGxldmVscyBvZiBwYXJ0aWFs Ci0JICAgICB0cmFuc3BhcmVuY3kuICBCbGVuZCBpdCB3aXRoIHRoZSBiYWNrZ3JvdW5kIG1hbnVh bGx5LiAgKi8KKwkgIGludCByID0gKnArKyA8PCA4OworCSAgaW50IGcgPSAqcCsrIDw8IDg7CisJ ICBpbnQgYiA9ICpwKysgPDwgODsKKwkgIFBVVF9QSVhFTCAoeGltZywgeCwgeSwgbG9va3VwX3Jn Yl9jb2xvciAoZiwgciwgZywgYikpOwogCSAgaWYgKGZlYXR1cmVzLmhhc19hbHBoYSB8fCBhbmlt KQogCSAgICB7Ci0JICAgICAgZmxvYXQgYSA9IChmbG9hdCkgcFszXSAvIFVJTlQ4X01BWDsKLQkg ICAgICByID0gKGludCkoYSAqIHBbMF0gKyAoMSAtIGEpICogYmdfY29sb3IucmVkKSAgIDw8IDg7 Ci0JICAgICAgZyA9IChpbnQpKGEgKiBwWzFdICsgKDEgLSBhKSAqIGJnX2NvbG9yLmdyZWVuKSA8 PCA4OwotCSAgICAgIGIgPSAoaW50KShhICogcFsyXSArICgxIC0gYSkgKiBiZ19jb2xvci5ibHVl KSAgPDwgODsKLQkgICAgICBwICs9IDQ7Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgewotCSAgICAg IHIgPSAqcCsrIDw8IDg7Ci0JICAgICAgZyA9ICpwKysgPDwgODsKLQkgICAgICBiID0gKnArKyA8 PCA4OworCSAgICAgIGlmIChtYXNrX2ltZykKKwkJUFVUX1BJWEVMIChtYXNrX2ltZywgeCwgeSwg KnAgPiAwID8gKnAgOiBQSVhfTUFTS19SRVRBSU4pOworCSAgICAgICsrcDsKIAkgICAgfQotCSAg UFVUX1BJWEVMICh4aW1nLCB4LCB5LCBsb29rdXBfcmdiX2NvbG9yIChmLCByLCBnLCBiKSk7CiAJ fQogICAgIH0KIApAQCAtMTA1MzYsNiArMTA0NTgsMTYgQEAgd2VicF9sb2FkIChzdHJ1Y3QgZnJh bWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nKQogICAvKiBQdXQgeGltZyBpbnRvIHRoZSBpbWFnZS4g ICovCiAgIGltYWdlX3B1dF94X2ltYWdlIChmLCBpbWcsIHhpbWcsIDApOwogCisgICAgLyogU2Ft ZSBmb3IgdGhlIG1hc2suICAqLworICBpZiAobWFza19pbWcpCisgICAgeworICAgICAgLyogRmls bCBpbiB0aGUgYmFja2dyb3VuZF90cmFuc3BhcmVudCBmaWVsZCB3aGlsZSB3ZSBoYXZlIHRoZQor CSBtYXNrIGhhbmR5LiAgQ2FzdGluZyBhdm9pZHMgYSBHQ0Mgd2FybmluZy4gICovCisgICAgICBp bWFnZV9iYWNrZ3JvdW5kX3RyYW5zcGFyZW50IChpbWcsIGYsIChFbWFjc19QaXhfQ29udGV4dClt YXNrX2ltZyk7CisKKyAgICAgIGltYWdlX3B1dF94X2ltYWdlIChmLCBpbWcsIG1hc2tfaW1nLCAx KTsKKyAgICB9CisKICAgaW1nLT53aWR0aCA9IHdpZHRoOwogICBpbWctPmhlaWdodCA9IGhlaWdo dDsKIApAQCAtMTIwNDcsMTYgKzExOTc5LDEzIEBAIHN2Z19sb2FkX2ltYWdlIChzdHJ1Y3QgZnJh bWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLCBjaGFyICpjb250ZW50cywKICAgICAvKiBUaGUgd3Jh cHBlciBzZXRzIHRoZSBmb3JlZ3JvdW5kIGNvbG9yLCB3aWR0aCBhbmQgaGVpZ2h0LCBhbmQKICAg ICAgICB2aWV3Qm94IG11c3QgY29udGFpbiB0aGUgZGltZW5zaW9ucyBvZiB0aGUgb3JpZ2luYWwg aW1hZ2UuICBJdAogICAgICAgIGFsc28gZHJhd3MgYSByZWN0YW5nbGUgb3ZlciB0aGUgd2hvbGUg c3BhY2UsIHNldCB0byB0aGUKLSAgICAgICBiYWNrZ3JvdW5kIGNvbG9yLCBiZWZvcmUgaW5jbHVk aW5nIHRoZSBvcmlnaW5hbCBpbWFnZS4gIFRoaXMKLSAgICAgICBhY3RzIHRvIHNldCB0aGUgYmFj a2dyb3VuZCBjb2xvciwgaW5zdGVhZCBvZiBsZWF2aW5nIGl0Ci0gICAgICAgdHJhbnNwYXJlbnQu ICAqLworICAgICAgIGJhY2tncm91bmQgY29sb3IsIGJlZm9yZSBpbmNsdWRpbmcgdGhlIG9yaWdp bmFsIGltYWdlLiAqLwogICAgIGNvbnN0IGNoYXIgKndyYXBwZXIgPQogICAgICAgIjxzdmcgeG1s bnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgIgogICAgICAgInhtbG5z OnhpPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YSW5jbHVkZVwiICIKICAgICAgICJzdHlsZT1c ImNvbG9yOiAjJTA2WDsgZmlsbDogY3VycmVudENvbG9yO1wiICIKICAgICAgICJ3aWR0aD1cIiVk XCIgaGVpZ2h0PVwiJWRcIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiICIKICAgICAgICJ2 aWV3Qm94PVwiMCAwICVmICVmXCI+IgotICAgICAgIjxyZWN0IHdpZHRoPVwiMTAwJSVcIiBoZWln aHQ9XCIxMDAlJVwiIGZpbGw9XCIjJTA2WFwiLz4iCiAgICAgICAiPHhpOmluY2x1ZGUgaHJlZj1c ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsJXNcIj48L3hpOmluY2x1ZGU+IgogICAgICAgIjwv c3ZnPiI7CiAKQEAgLTEyMDkyLDcgKzEyMDIxLDYgQEAgc3ZnX2xvYWRfaW1hZ2UgKHN0cnVjdCBm cmFtZSAqZiwgc3RydWN0IGltYWdlICppbWcsIGNoYXIgKmNvbnRlbnRzLAogICAgIGlmIChidWZm ZXJfc2l6ZSA8PSBzbnByaW50ZiAod3JhcHBlZF9jb250ZW50cywgYnVmZmVyX3NpemUsIHdyYXBw ZXIsCiAJCQkJIGZvcmVncm91bmQgJiAweEZGRkZGRiwgd2lkdGgsIGhlaWdodCwKIAkJCQkgdmll d2JveF93aWR0aCwgdmlld2JveF9oZWlnaHQsCi0JCQkJIGJhY2tncm91bmQgJiAweEZGRkZGRiwK IAkJCQkgU1NEQVRBIChlbmNvZGVkX2NvbnRlbnRzKSkpCiAgICAgICBnb3RvIHJzdmdfZXJyb3I7 CiAKQEAgLTEyMTczLDEzICsxMjEwMSwyMSBAQCBzdmdfbG9hZF9pbWFnZSAoc3RydWN0IGZyYW1l ICpmLCBzdHJ1Y3QgaW1hZ2UgKmltZywgY2hhciAqY29udGVudHMsCiAKICAgewogICAgIC8qIFRy eSB0byBjcmVhdGUgYSB4IHBpeG1hcCB0byBob2xkIHRoZSBzdmcgcGl4bWFwLiAgKi8KLSAgICBF bWFjc19QaXhfQ29udGFpbmVyIHhpbWc7CisgICAgRW1hY3NfUGl4X0NvbnRhaW5lciB4aW1nLCBt YXNrX2ltZyA9IE5VTEw7CiAgICAgaWYgKCFpbWFnZV9jcmVhdGVfeF9pbWFnZV9hbmRfcGl4bWFw IChmLCBpbWcsIHdpZHRoLCBoZWlnaHQsIDAsICZ4aW1nLCAwKSkKICAgICAgIHsKIAlnX29iamVj dF91bnJlZiAocGl4YnVmKTsKIAlyZXR1cm4gZmFsc2U7CiAgICAgICB9CiAKKyAgaWYgKCFpbWFn ZV9jcmVhdGVfeF9pbWFnZV9hbmRfcGl4bWFwIChmLCBpbWcsIHdpZHRoLCBoZWlnaHQsIDEsCisJ CQkJCSAgICZtYXNrX2ltZywgdHJ1ZSkpCisgICAgeworICAgICAgaW1hZ2VfZGVzdHJveV94X2lt YWdlICh4aW1nKTsKKyAgICAgIGltYWdlX2NsZWFyX2ltYWdlXzEgKGYsIGltZywgQ0xFQVJfSU1B R0VfUElYTUFQKTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBpbml0X2NvbG9y X3RhYmxlICgpOwogCiAgICAgLyogVGhpcyBsb29wIGhhbmRsZXMgb3BhY2l0eSB2YWx1ZXMsIHNp bmNlIEVtYWNzIGFzc3VtZXMKQEAgLTEyMTk1LDkgKzEyMTMxLDEzIEBAIHN2Z19sb2FkX2ltYWdl IChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBpbWFnZSAqaW1nLCBjaGFyICpjb250ZW50cywKIAkg ICAgaW50IGJsdWUgICAgPSAqcGl4ZWxzKys7CiAKICAgICAgICAgICAgIC8qIFNraXAgb3BhY2l0 eS4gICovCi0JICAgIHBpeGVscysrOworCSAgICBpbnQgb3BhY2l0eSA9ICpwaXhlbHMrKzsKIAog CSAgICBQVVRfUElYRUwgKHhpbWcsIHgsIHksIGxvb2t1cF9yZ2JfY29sb3IgKGYsIHJlZCA8PCA4 LCBncmVlbiA8PCA4LCBibHVlIDw8IDgpKTsKKworCQlpZiAobWFza19pbWcpCisJCQlQVVRfUElY RUwgKG1hc2tfaW1nLCB4LCB5LCBvcGFjaXR5ID4gMCA/IG9wYWNpdHkgOiBQSVhfTUFTS19SRVRB SU4pOworCiAJICB9CiAKIAlwaXhlbHMgKz0gcm93c3RyaWRlIC0gNCAqIHdpZHRoOwpAQCAtMTIy MjAsNiArMTIxNjAsMTYgQEAgc3ZnX2xvYWRfaW1hZ2UgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0 IGltYWdlICppbWcsIGNoYXIgKmNvbnRlbnRzLAogCiAgICAgLyogUHV0IHhpbWcgaW50byB0aGUg aW1hZ2UuICAqLwogICAgIGltYWdlX3B1dF94X2ltYWdlIChmLCBpbWcsIHhpbWcsIDApOworCisg ICAgLyogU2FtZSBmb3IgdGhlIG1hc2suICAqLworICAgIGlmIChtYXNrX2ltZykKKyAgICAgIHsK KwkvKiBGaWxsIGluIHRoZSBiYWNrZ3JvdW5kX3RyYW5zcGFyZW50IGZpZWxkIHdoaWxlIHdlIGhh dmUgdGhlCisJICAgbWFzayBoYW5keS4gIENhc3RpbmcgYXZvaWRzIGEgR0NDIHdhcm5pbmcuICAq LworCWltYWdlX2JhY2tncm91bmRfdHJhbnNwYXJlbnQgKGltZywgZiwgKEVtYWNzX1BpeF9Db250 ZXh0KW1hc2tfaW1nKTsKKworCWltYWdlX3B1dF94X2ltYWdlIChmLCBpbWcsIG1hc2tfaW1nLCAx KTsKKyAgICAgIH0KICAgfQogCiAgIGVhc3N1bWUgKGVyciA9PSBOVUxMKTsK --000000000000393c07060d17a79d--