From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Vince Salvino Newsgroups: gmane.emacs.bugs Subject: bug#51404: Support system dark mode on Windows 10 Date: Sat, 29 Jan 2022 20:27:48 +0000 Message-ID: References: <83r18raqam.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_002_CH2PR12MB4231CFB23C02AB61B8FD8C14A5239CH2PR12MB4231namp_" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="12466"; mail-complaints-to="usenet@ciao.gmane.io" Cc: "51404@debbugs.gnu.org" <51404@debbugs.gnu.org> To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Jan 29 21:28:43 2022 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 1nDuKv-0002zi-L4 for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 29 Jan 2022 21:28:41 +0100 Original-Received: from localhost ([::1]:44484 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nDuKt-0003Q8-S3 for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 29 Jan 2022 15:28:39 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:46272) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nDuKI-00037D-3z for bug-gnu-emacs@gnu.org; Sat, 29 Jan 2022 15:28:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:42013) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nDuKH-0007jt-R3 for bug-gnu-emacs@gnu.org; Sat, 29 Jan 2022 15:28:01 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1nDuKH-0001BV-OQ for bug-gnu-emacs@gnu.org; Sat, 29 Jan 2022 15:28:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Vince Salvino Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 29 Jan 2022 20:28:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51404 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 51404-submit@debbugs.gnu.org id=B51404.16434880814549 (code B ref 51404); Sat, 29 Jan 2022 20:28:01 +0000 Original-Received: (at 51404) by debbugs.gnu.org; 29 Jan 2022 20:28:01 +0000 Original-Received: from localhost ([127.0.0.1]:34916 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nDuKG-0001BG-Rv for submit@debbugs.gnu.org; Sat, 29 Jan 2022 15:28:01 -0500 Original-Received: from mail-co1nam11on2064.outbound.protection.outlook.com ([40.107.220.64]:61889 helo=NAM11-CO1-obe.outbound.protection.outlook.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nDuKE-0001B2-9y for 51404@debbugs.gnu.org; Sat, 29 Jan 2022 15:27:58 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Vg/fYFDp8ZZeDo8dbiGmcPPzeGbTfiQIvNw2h3L7DyzYtKf98CIBrBVTBKzfqVAtpLEy/+m0xsmVzKGiLRG8wN25wOOnPD8yENG2CUT5ZWGOvUxMe/s4o+w/NKbO6IXsBM9l0DQywOd2YFvr8I1y3cWlnzewr2f3XZBHETtW//r2AGfLO0iEafYzoMHuHmzylCrkP47R/2DtU75OmtPg1CQaNbl6mWBMsfbFAMyuRtAU49cyvjsD0eAtHcTGBNK8HQ7SwB48dED1IDAyQ6e92a2CnKrwBPEhbTLy6bAcgjPqFNqLDFdtidn1fvSXwokqwdel46uVbp4HnjjBvKqErg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=kXekQL6z4RHHG1mwIlBk446xCCYqa2KeI6trVOwqGRs=; b=HiflI4usMjAs5zza35EvUklt+o1L64E7g81fbl8ne2kcXalpDm3x5FV/tsQaqIHFJrSY+VPBsZqpWCmOHFTiRIv2DfIJ+w9t/3LNJTAd7/LubX3zQ293rQDtms2NdzZbwLGrc3ZfPqMiLzuSYmSBMKX3iSgcvsXRlTfSvTNWiBHtDjpEc0CYb+ofi6a67QVihzFEHAEFotKaWJ5/Vwa7YDesyXbN0K3BY30LHoxSXe1H42rxbrHtDxP4UIFSgyX2J+77FZGbAUjji56MSD8sY7z2bcVuqWRIzBZbxDIkPha7LPyduzPL30Gc8q/NXLqLH3KYE3oCngxwWRtb8bYG/Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=coderedcorp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kXekQL6z4RHHG1mwIlBk446xCCYqa2KeI6trVOwqGRs=; b=azBEtlAiYu90F+2L6cJ2zzD9yEbpqzLLYWTDHCX0Mg9Lovkcb6rOYpPo1zlKK7x5HJNXfYJaBlsrEdklRVT18w+OV1WmIQZjQbYW1IIrzWiCIOnBZSX8rk7E7teObXVh5dyYdQolBNY8J2S2WEdHkZv5pdlYvzdVAMYp36a1/cE= Original-Received: from CH2PR12MB4231.namprd12.prod.outlook.com (2603:10b6:610:7d::24) by MWHPR12MB1871.namprd12.prod.outlook.com (2603:10b6:300:10b::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.20; Sat, 29 Jan 2022 20:27:49 +0000 Original-Received: from CH2PR12MB4231.namprd12.prod.outlook.com ([fe80::859e:5a4f:dd62:bb26]) by CH2PR12MB4231.namprd12.prod.outlook.com ([fe80::859e:5a4f:dd62:bb26%9]) with mapi id 15.20.4930.020; Sat, 29 Jan 2022 20:27:48 +0000 Thread-Topic: Support system dark mode on Windows 10 Thread-Index: AQHYFOvZ0/7dj/k/mkqKHdz/Yv5G2ax6YMTw In-Reply-To: <83r18raqam.fsf@gnu.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=coderedcorp.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 27205593-80d7-49ff-4109-08d9e365d110 x-ms-traffictypediagnostic: MWHPR12MB1871:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: MlZaacb3JcrPISdbMaVYgLa1l4qBuZdKuo+CxYMfWjX6Sd6SkvKaGLBoccMsokSOmkzerwFCdzNp8rgKSJG7I+1yNwiqo2F237DbvZOvKOyGw2CqnnDQLR5XWRNMKKr8nVTy1ReGpYGBTHkCZOU7z9MLVIZqEHFyUnNwZFlMYOTkxfNsJ/Ef+wZs0Z/l7YDU+OiR3OqAkvqO2NDrztfdoZRktkPn9wnXob3HGYrFGSyIsy3o4bdVc+dAnDd/ycsV+CNehTYZuyOSOAXku679SWdtdUDJAAnbKXXm9jinY4bnh9hzx9UkP/tlnROx0UHKAeBpMLIIZovu24oY3OQgJ9tEDCuXDhm/YcXw5a3CYuoAXGR6oQWd0QGA+FECm4csSOfkzho/LAmIRLVlSbDCdkwBKwT0BOE9J9vZCgco52e9HZcre9tlzR2JDqJSL9EG/QllPmYztj7F8CFAbvRzMgvX/UtIID8saRAOruO/z+zP0kV0NdQIcGgUHhVgWYqcO3MWn4QohX6ylDPrEqaiyHxn77KLg31lCjaPAUrkDLiqUP7y7xloXdHrEi1Cb95QAS6BinCOVVYIjnKvYuJSv5P4yB0O0e5AVIXQGDavPyiGad/j/Y6mBQvLUV5bZso5zkUNLRrv6Od3a+6mdPSj8u/630eBco1Yl+1LKS4Wn1OwQu7sUipF+Udif3GvvoXl3v4Vhf9WvDHfuhziRwJO41Fw/jGHy3POEHBB3jgHDfI//sdApGG9Qq3wZjQzc z7ge1eqtXHiq/mjzBYqYbhdaL4Mfyd3pteonhmYNAUtBPg= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR12MB4231.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(396003)(346002)(376002)(136003)(39830400003)(86362001)(76116006)(6916009)(966005)(508600001)(38070700005)(66946007)(66446008)(66476007)(66556008)(8936002)(8676002)(4326008)(55016003)(52536014)(64756008)(122000001)(5660300002)(99936003)(316002)(38100700002)(6506007)(9686003)(7696005)(71200400001)(2906002)(33656002)(83380400001)(186003)(26005)(20210929001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: zI4JQoQmGVD4gkx2m4/GMiw/cj51kXOT44mErLOML09R71P5qA8fzb50LX09WCmBa5HADxWf96ROkfcc6JIjRY5bsXvVPoB9X+WjypSWG0lg9j2CT0DJWdN1XSTEJLt71xDkMZTZRbis8DLYXMRQ3b7xmQGFKd5XaFbRIf9sOpDpk5TJufEHV4AxqRWXej/7MHfQlTyUGed0CKbUXlMmwRjAbDOY+BIrD1ZJW5Gkt5IduHO0rkGMP9Dg0YJDxI3dcQiBfdB4kq4FXS1ttK9Mt2vdAlIIrpRc1sEp1NiJOV6iR2gKRwdxB41/VhyBfgDYJNmVEZcukkqPv64mZqX6tWx/TXYPeVmeHvmjazH9nUZ8Mi50DlAcKE1SfF977oq/mQ05FGyLwwf9Y59Yok25XocoK8SDWtesLnXjl8W1cosvVbiOI0MBIBppofF21ASqBR40xcowTVrEiV9qUOQewCEDnpSKpwu9OZbs38eNFv3JS3K1hXA8fQt0yWCrNf8Zu/64VfzSQiemRpT4puDugSuSWeXKeV0dJg9VFTuhqfgDfww2YYfvhfwsI+GlspPjSWizYwbtk2eHYxoqrPPSd7xLw2dN7uQ9TDEytlQdxyHdzPt8auPkiTj5mMnXgGJ2hF9fJodYpB3cwFyO/xF6BoKHuVsz66YKXEbCFtYwS2LICcrXYjFDyq8yTSb4tX3iXdM6m405vxXgq09aidJS8ATQgZiGtFzQfxo4osgXgJdEtBuwWvuEon9JHz HHBs9qT/gPbiR/dBvGz8qISQ8qYOe+OYTvdUrzp/lnUL6r5r/3KDTJlcycFU8K3FMzunjVz+pbWtLOWZ5D7H4n0CvVXDSZdL8V X-OriginatorOrg: coderedcorp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB4231.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 27205593-80d7-49ff-4109-08d9e365d110 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jan 2022 20:27:48.7403 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9c94adb1-2ce8-484f-be82-c9b5127d4cb1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: XkATNaQS6JpYFSaw02pUKMc4OtU6lhHLRO6bMRbta5BjWJxWYhICbMp/K1WREccFDP0i7HP6cs4lzdsk05+FjQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1871 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" Xref: news.gmane.io gmane.emacs.bugs:225564 Archived-At: --_002_CH2PR12MB4231CFB23C02AB61B8FD8C14A5239CH2PR12MB4231namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Thanks for the review. Attached is the revised patch, minus one thing speci= fically: > I see where you add windows to the list, but I don't see where you remove= deleted windows from the list. Does that mean the list will always grow i= ndefinitely through an Emacs session, even if windows are deleted? I also had this concern but found it a bit sticky. I can't quite find a way= to know if a HWND is destroyed. Windows seems to keep the HWNDs in memory,= and even reuses them if a window is destroyed and new one is created. The = win32 API seems to be designed around this behavior as calling functions wi= th a HWND that is destroyed or that is not owned by the program will not ha= ve any adverse effects. I experimented with WM_EMACS_DESTROYWINDOW but that seems to only be trigge= red on the titlebar destroy, not the other "windows" such as scrollbars, me= nu, etc. To answer your question, yes the current implementation will grow indefinit= ely. Practically speaking the memory overhead is quite small though - as a = marathon emacs session creating and destroying thousands of frames repeated= ly might add up to few kilobytes memory overhead on supported Win 10 system= s (each entry is 16 bytes). It's definitely sloppy programming, but I will = have to continue to learn more about win32 to figure out the solution, give= n enough free time in the future. A few items of note: * https://stackoverflow.com/questions/2344233/validate-hwnd-using-win32-api * I'm still digging through the code to figure out if emacs has a parent/ch= ild relationship for HWNDs, in which case this might be relevant (especiall= y EnumChildWindows to loop through children and purge them from the list): = https://docs.microsoft.com/en-us/windows/win32/winmsg/using-windows Vince Salvino --_002_CH2PR12MB4231CFB23C02AB61B8FD8C14A5239CH2PR12MB4231namp_ Content-Type: application/octet-stream; name="0002-Support-MS-Windows-light-dark-mode-theme-change-duri.patch" Content-Description: 0002-Support-MS-Windows-light-dark-mode-theme-change-duri.patch Content-Disposition: attachment; filename="0002-Support-MS-Windows-light-dark-mode-theme-change-duri.patch"; size=7706; creation-date="Sat, 29 Jan 2022 20:24:44 GMT"; modification-date="Sat, 29 Jan 2022 20:27:48 GMT" Content-Transfer-Encoding: base64 RnJvbSBhYjliYmY0NzM1M2ZjYzdiNTViZDkzZWFmNWQ0MGEyN2U1YzFlYjFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaW5jZSBTYWx2aW5vIDxzYWx2aW5vQGNvZGVyZWRjb3JwLmNv bT4KRGF0ZTogU2F0LCAyOSBKYW4gMjAyMiAxNToxNTowMSAtMDUwMApTdWJqZWN0OiBbUEFUQ0hd IFN1cHBvcnQgTVMtV2luZG93cyBsaWdodC9kYXJrIG1vZGUgdGhlbWUgY2hhbmdlIGR1cmluZwog cnVudGltZQoKVHJhY2sgSFdORHMgYW5kIHVwZGF0ZSB0aGVtIGR1cmluZyBXTV9TRVRUSU5HQ0hB TkdFIGV2ZW50cyAoQnVnIzUxNDA0KS4KKiBzcmMvdzMyZm5zLmMgKHczMl9hcHBseXRoZW1lLCB3 MzJfcXVlcnlkYXJrbW9kZSwgdzMyX3duZF9wcm9jLAogIGdsb2JhbHNfb2ZfdzMyZm5zKTogVHJh Y2sgYW5kIG1hbmlwdWxhdGUgSFdORCBzdHJ1Y3RzLgotLS0KIHNyYy93MzJmbnMuYyB8IDExOSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCA5NSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvdzMyZm5zLmMgYi9zcmMvdzMyZm5zLmMKaW5kZXggMWVhNjg1ZDE5NC4uOGY0NzVjZWJl NCAxMDA2NDQKLS0tIGEvc3JjL3czMmZucy5jCisrKyBiL3NyYy93MzJmbnMuYwpAQCAtNzgsNiAr NzgsNyBAQCAjZGVmaW5lIF9XSU4zMl9XSU5OVCAweDA2MDAKICAgU2VlOiBodHRwczovL2dpdGh1 Yi5jb20vbWljcm9zb2Z0L1dpbmRvd3NBcHBTREsvaXNzdWVzLzQxCiAqLwogI2RlZmluZSBEQVJL X01PREVfQVBQX05BTUUgTCJEYXJrTW9kZV9FeHBsb3JlciIKKyNkZWZpbmUgTElHSFRfTU9ERV9B UFBfTkFNRSBMIkV4cGxvcmVyIgogLyogRm9yIFdpbmRvd3MgMTAgdmVyc2lvbiAxODA5LCAxOTAz LCAxOTA5LiAqLwogI2lmbmRlZiBEV01XQV9VU0VfSU1NRVJTSVZFX0RBUktfTU9ERV9PTEQKICNk ZWZpbmUgRFdNV0FfVVNFX0lNTUVSU0lWRV9EQVJLX01PREVfT0xEIDE5CkBAIC0yNzMsOSArMjc0 LDIwIEBAICNkZWZpbmUgTUVOVV9GUkVFX0RFTEFZIDEwMDAKIGludCB3MzJfbWlub3JfdmVyc2lv bjsKIGludCB3MzJfYnVpbGRfbnVtYmVyOwogCi0vKiBJZiB0aGUgT1MgaXMgc2V0IHRvIHVzZSBk YXJrIG1vZGUuICAqLworLyogSWYgdGhlIE9TIHN1cHBvcnRzIGxpZ2h0L2RhcmsgbW9kZS4gICov CitCT09MIHczMl9zdXBwb3J0c19kYXJrbW9kZSA9IEZBTFNFOworLyogSWYgRW1hY3Mgc2hvdWxk IHVzZSB0aGUgT1MncyBkYXJrIG1vZGUuICAqLwogQk9PTCB3MzJfZGFya21vZGUgPSBGQUxTRTsK IAorLyogU2ltcGxlIGxpbmtlZCBsaXN0IHRvIHRyYWNrIHdpbmRvdyBoYW5kbGVzIGR1cmluZyBy dW50aW1lIHNvIHRoZXkKKyAgIGNhbiBiZSB1cGRhdGVkIGlmIHRoZSBXaW5kb3dzIGxpZ2h0L2Rh cmsgbW9kZSB0aGVtZSBpcyBjaGFuZ2VkLiAgKi8KK3N0cnVjdCBIV05EX05PREUKK3sKKyAgSFdO RCBod25kOworICBzdHJ1Y3QgSFdORF9OT0RFICpuZXh0OworfTsKK3N0cnVjdCBIV05EX05PREUg KmdfaHduZF9yb290OworCiAvKiBEaXN0aW5ndWlzaCBiZXR3ZWVuIFdpbmRvd3MgTlQgYW5kIFdp bmRvd3MgOTUuICAqLwogaW50IG9zX3N1YnR5cGU7CiAKQEAgLTIzMDMsMTkgKzIzMTUsNTggQEAg dzMyX2luaXRfY2xhc3MgKEhJTlNUQU5DRSBoaW5zdCkKICAgICB9CiB9CiAKLS8qIEFwcGxpZXMg dGhlIFdpbmRvd3Mgc3lzdGVtIHRoZW1lIChsaWdodCBvciBkYXJrKSB0byB0aGUgd2luZG93Ci0g ICBoYW5kbGUgSFdORC4gICovCisKKy8qKgorICogdzMyX3F1ZXJ5X2Rhcmttb2RlOgorICoKKyAq IEdldHMgdGhlIHByZWZlcnJlZCBXaW5kb3dzIGFwcCBtb2RlOgorICogKiBGQUxTRSA9IExpZ2h0 IG1vZGUgKHRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgdXNlciBzcGVjaWZ5aW5nCisgKiAgICAg ICAgICAgTGlnaHQsIG9yIHRoZSBhYnNlbmNlIG9mIGFueSBzZXR0aW5nKS4KKyAqICogVFJVRSA9 IERhcmsgbW9kZSAoYWRkZWQgaW4gV2luZG93cyAxMCAxODA5KS4KKyAqLworc3RhdGljIEJPT0wK K3czMl9xdWVyeWRhcmttb2RlICh2b2lkKQoreworICBpZiAodzMyX3N1cHBvcnRzX2Rhcmttb2Rl KQorICAgIHsKKyAgICAgIC8qIENoZWNrIFdpbmRvd3MgUmVnaXN0cnkgZm9yIHN5c3RlbSB0aGVt ZS4KKwkgVE9ETzogIk5pY2UgdG8gaGF2ZSIgd291bGQgYmUgdG8gY3JlYXRlIGEgbGlzcCBzZXR0 aW5nICh3aGljaAorCSBkZWZhdWx0cyB0byB0aGlzIFdpbmRvd3MgUmVnaXN0cnkgdmFsdWUpLCB0 aGVuIHJlYWQgdGhhdCBsaXNwCisJIHZhbHVlIGhlcmUgaW5zdGVhZC4gIFRoaXMgd291bGQgYWxs b3cgdGhlIHVzZXIgdG8gZm9yY2libHkKKwkgb3ZlcnJpZGUgdGhlIHN5c3RlbSB0aGVtZSAod2hp Y2ggaXMgYWxzbyB1c2VyLWNvbmZpZ3VyYWJsZSBpbgorCSBXaW5kb3dzIHNldHRpbmdzOyBzZWUg TVMtV2luZG93cyBzZWN0aW9uIGluIEVtYWNzIG1hbnVhbCkuICAqLworICAgICAgTFBCWVRFIHZh bCA9CisJdzMyX2dldF9yZXNvdXJjZSAoIlNvZnR3YXJlXFxNaWNyb3NvZnRcXFdpbmRvd3NcXEN1 cnJlbnRWZXJzaW9uXFxUaGVtZXNcXFBlcnNvbmFsaXplIiwKKwkJCSAgIkFwcHNVc2VMaWdodFRo ZW1lIiwKKwkJCSAgTlVMTCk7CisgICAgICByZXR1cm4gdmFsICYmICp2YWwgPT0gMDsKKyAgICB9 CisgIHJldHVybiBGQUxTRTsKK30KKworLyoqCisgKiB3MzJfYXBwbHl0aGVtZToKKyAqCisgKiBB cHBsaWVzIHRoZSBXaW5kb3dzIHN5c3RlbSB0aGVtZSAobGlnaHQgb3IgZGFyaykgdG8gdGhlIHdp bmRvdworICogaGFuZGxlIEhXTkQuICBgdHJhY2snIHNob3VsZCBnZW5lcmFsbHkgYmUgVFJVRSB0 byBrZWVwIGEgcmVmZXJlbmNlCisgKiB0byB0aGlzIEhXTkQgZm9yIGZ1dHVyZSB1c2UuCisgKi8K IHN0YXRpYyB2b2lkCi13MzJfYXBwbHl0aGVtZSAoSFdORCBod25kKQordzMyX2FwcGx5dGhlbWUg KEhXTkQgaHduZCwgQk9PTCB0cmFjaykKIHsKLSAgaWYgKHczMl9kYXJrbW9kZSkKKyAgaWYgKHcz Ml9zdXBwb3J0c19kYXJrbW9kZSkKICAgICB7CiAgICAgICAvKiBTZXQgd2luZG93IHRoZW1lIHRv IHRoYXQgb2YgYSBidWlsdC1pbiBXaW5kb3dzIGFwcCAoRXhwbG9yZXIpLAogCSBiZWNhdXNlIGl0 IGhhcyBkYXJrIHNjcm9sbCBiYXJzIGFuZCBvdGhlciBVSSBlbGVtZW50cy4gICovCiAgICAgICBp ZiAoU2V0V2luZG93VGhlbWVfZm4pCi0JU2V0V2luZG93VGhlbWVfZm4gKGh3bmQsIERBUktfTU9E RV9BUFBfTkFNRSwgTlVMTCk7CisJeworCSAgaWYgKHczMl9kYXJrbW9kZSkKKwkgICAgU2V0V2lu ZG93VGhlbWVfZm4gKGh3bmQsIERBUktfTU9ERV9BUFBfTkFNRSwgTlVMTCk7CisJICBlbHNlCisJ ICAgIFNldFdpbmRvd1RoZW1lX2ZuIChod25kLCBMSUdIVF9NT0RFX0FQUF9OQU1FLCBOVUxMKTsK Kwl9CiAKLSAgICAgIC8qIFNldCB0aGUgdGl0bGViYXIgdG8gc3lzdGVtIGRhcmsgbW9kZS4gICov CisgICAgICAvKiBUb2dnbGUgZGFya21vZGUgdGl0bGViYXIgb24gb3Igb2ZmLiAgKi8KICAgICAg IGlmIChEd21TZXRXaW5kb3dBdHRyaWJ1dGVfZm4pCiAJewogCSAgLyogV2luZG93cyAxMCB2ZXJz aW9uIDIwMDQgYW5kIHVwLCBXaW5kb3dzIDExLiAgKi8KQEAgLTIzMjMsOSArMjM3NCwyMCBAQCB3 MzJfYXBwbHl0aGVtZSAoSFdORCBod25kKQogCSAgLyogV2luZG93cyAxMCBvbGRlciB0aGFuIDIw MDQuICAqLwogCSAgaWYgKHczMl9idWlsZF9udW1iZXIgPCAxOTA0MSkKIAkgICAgYXR0ciA9IERX TVdBX1VTRV9JTU1FUlNJVkVfREFSS19NT0RFX09MRDsKKwkgIC8qIFRvZ2dsZSBkYXJrIG1vZGUg ZmxhZyBiYXNlZCBvbiB2YWx1ZSBvZiAndzMyX2Rhcmttb2RlJy4gICovCiAJICBEd21TZXRXaW5k b3dBdHRyaWJ1dGVfZm4gKGh3bmQsIGF0dHIsCiAJCQkJICAgICZ3MzJfZGFya21vZGUsIHNpemVv ZiAodzMyX2Rhcmttb2RlKSk7CiAJfQorCisgICAgICAvKiBBZGQgdGhlIEhXTkQgdG8gb3VyIGds b2JhbCBsaXN0IHNvIGl0IGNhbiBiZSB1cGRhdGVkIGxhdGVyIGlmCisJIHRoZSBPUyBsaWdodC9k YXJrIG1vZGUgdGhlbWUgaXMgY2hhbmdlZC4gICovCisgICAgICBpZih0cmFjaykKKwl7CisJICBz dHJ1Y3QgSFdORF9OT0RFICpjdXJyID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgSFdORF9OT0RF KSk7CisJICBjdXJyLT5od25kID0gaHduZDsKKwkgIGN1cnItPm5leHQgPSBnX2h3bmRfcm9vdDsK KwkgIGdfaHduZF9yb290ID0gY3VycjsKKwl9CiAgICAgfQogfQogCkBAIC0yMzQyLDcgKzI0MDQs NyBAQCB3MzJfY3JlYXRldnNjcm9sbGJhciAoc3RydWN0IGZyYW1lICpmLCBzdHJ1Y3Qgc2Nyb2xs X2JhciAqIGJhcikKIAkJICAgICAgIGJhci0+bGVmdCwgYmFyLT50b3AsIGJhci0+d2lkdGgsIGJh ci0+aGVpZ2h0LAogCQkgICAgICAgRlJBTUVfVzMyX1dJTkRPVyAoZiksIE5VTEwsIGhpbnN0LCBO VUxMKTsKICAgaWYgKGh3bmQpCi0gICAgdzMyX2FwcGx5dGhlbWUgKGh3bmQpOworICAgIHczMl9h cHBseXRoZW1lIChod25kLCBUUlVFKTsKICAgcmV0dXJuIGh3bmQ7CiB9CiAKQEAgLTIzNTksNyAr MjQyMSw3IEBAIHczMl9jcmVhdGVoc2Nyb2xsYmFyIChzdHJ1Y3QgZnJhbWUgKmYsIHN0cnVjdCBz Y3JvbGxfYmFyICogYmFyKQogCQkgICAgICAgYmFyLT5sZWZ0LCBiYXItPnRvcCwgYmFyLT53aWR0 aCwgYmFyLT5oZWlnaHQsCiAJCSAgICAgICBGUkFNRV9XMzJfV0lORE9XIChmKSwgTlVMTCwgaGlu c3QsIE5VTEwpOwogICBpZiAoaHduZCkKLSAgICB3MzJfYXBwbHl0aGVtZSAoaHduZCk7CisgICAg dzMyX2FwcGx5dGhlbWUgKGh3bmQsIFRSVUUpOwogICByZXR1cm4gaHduZDsKIH0KIApAQCAtMjQ0 Nyw3ICsyNTA5LDcgQEAgdzMyX2NyZWF0ZXdpbmRvdyAoc3RydWN0IGZyYW1lICpmLCBpbnQgKmNv b3JkcykKICAgICAgIERyYWdBY2NlcHRGaWxlcyAoaHduZCwgVFJVRSk7CiAKICAgICAgIC8qIEVu YWJsZSBzeXN0ZW0gbGlnaHQvZGFyayB0aGVtZS4gICovCi0gICAgICB3MzJfYXBwbHl0aGVtZSAo aHduZCk7CisgICAgICB3MzJfYXBwbHl0aGVtZSAoaHduZCwgVFJVRSk7CiAKICAgICAgIC8qIERv IHRoaXMgdG8gZGlzY2FyZCB0aGUgZGVmYXVsdCBzZXR0aW5nIHNwZWNpZmllZCBieSBvdXIgcGFy ZW50LiAqLwogICAgICAgU2hvd1dpbmRvdyAoaHduZCwgU1dfSElERSk7CkBAIC01MTc4LDYgKzUy NDAsMjUgQEAgdzMyX3duZF9wcm9jIChIV05EIGh3bmQsIFVJTlQgbXNnLCBXUEFSQU0gd1BhcmFt LCBMUEFSQU0gbFBhcmFtKQogCSBjaGFuZ2VkLCBzbyBpZiBFbWFjcyBpcyBpbnRlcmVzdGVkIGlu IHNvbWUgb2YgdGhlbSwgaXQgY291bGQKIAkgdXBkYXRlIGl0cyBpbnRlcm5hbCB2YWx1ZXMuICAq LwogICAgICAgbXlfcG9zdF9tc2cgKCZ3bXNnLCBod25kLCBtc2csIHdQYXJhbSwgbFBhcmFtKTsK KworICAgICAgLyogQ2hlY2sgaWYgc2V0dGluZ3MgY2hhbmdlZCBMaWdodC9EYXJrIG1vZGUuCisJ IFJlLWxvb2t1cCB0aGUgc2V0dGluZyBhbmQgdXBkYXRlIHRoZSBIV05EcyBhY2NvcmRpbmdseS4g ICovCisgICAgICBpZih3MzJfc3VwcG9ydHNfZGFya21vZGUpCisJeworCSAgQk9PTCBuZXdfZGFy a21vZGUgPSB3MzJfcXVlcnlkYXJrbW9kZSgpOworCSAgaWYgKHczMl9kYXJrbW9kZSAhPSBuZXdf ZGFya21vZGUpCisJICAgIHsKKwkgICAgICB3MzJfZGFya21vZGUgPSBuZXdfZGFya21vZGU7CisJ ICAgICAgLyogTG9vcCB0aHJvdWdoIGFsbCBrbm93biBIV05EcyBhbmQgYXBwbHkgdGhlbWUuICAq LworCSAgICAgIHN0cnVjdCBIV05EX05PREUgKmN1cnIgPSBnX2h3bmRfcm9vdDsKKwkgICAgICB3 aGlsZSAoY3VyciAhPSBOVUxMKQorCQl7CisJCSAgdzMyX2FwcGx5dGhlbWUgKGN1cnItPmh3bmQs IEZBTFNFKTsKKwkJICBjdXJyID0gY3Vyci0+bmV4dDsKKwkJfQorCSAgICB9CisJfQorCiAgICAg ICBnb3RvIGRmbHQ7CiAKICAgICBjYXNlIFdNX1NFVEZPQ1VTOgpAQCAtMTExNTAsMTMgKzExMjMx LDE0IEBAIGdsb2JhbHNfb2ZfdzMyZm5zICh2b2lkKQogICAgIGdldF9wcm9jX2FkZHIgKGhtX2tl cm5lbDMyLCAiU2V0VGhyZWFkRGVzY3JpcHRpb24iKTsKIAogICAvKiBTdXBwb3J0IE9TIGRhcmsg bW9kZSBvbiBXaW5kb3dzIDEwIHZlcnNpb24gMTgwOSBhbmQgaGlnaGVyLgotICAgICBTZWUgYHcz Ml9hcHBseXRoZW1lYCB3aGljaCB1c2VzIGFwcHJvcHJpYXRlIEFQSXMgcGVyIHZlcnNpb24gb2Yg V2luZG93cy4KKyAgICAgU2VlIGB3MzJfYXBwbHl0aGVtZScgd2hpY2ggdXNlcyBhcHByb3ByaWF0 ZSBBUElzIHBlciB2ZXJzaW9uIG9mIFdpbmRvd3MuCiAgICAgIEZvciBmdXR1cmUgd3JldGNoZXMg d2hvIG1heSBuZWVkIHRvIHVuZGVyc3RhbmQgV2luZG93cyBidWlsZCBudW1iZXJzOgogICAgICBo dHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dzL3JlbGVhc2UtaGVhbHRoL3Jl bGVhc2UtaW5mb3JtYXRpb24KICAgKi8KICAgaWYgKG9zX3N1YnR5cGUgPT0gT1NfU1VCVFlQRV9O VAogICAgICAgJiYgdzMyX21ham9yX3ZlcnNpb24gPj0gMTAgJiYgdzMyX2J1aWxkX251bWJlciA+ PSAxNzc2MykKICAgICB7CisgICAgICB3MzJfc3VwcG9ydHNfZGFya21vZGUgPSBUUlVFOwogICAg ICAgLyogTG9hZCBkd21hcGkuZGxsIGFuZCB1eHRoZW1lLmRsbCwgd2hpY2ggd2lsbCBiZSBuZWVk ZWQgdG8gc2V0CiAJIHdpbmRvdyB0aGVtZXMuICAqLwogICAgICAgSE1PRFVMRSBkd21hcGlfbGli ID0gTG9hZExpYnJhcnkoImR3bWFwaS5kbGwiKTsKQEAgLTExMTY1LDE5ICsxMTI0Nyw4IEBAIGds b2JhbHNfb2ZfdzMyZm5zICh2b2lkKQogICAgICAgSE1PRFVMRSB1eHRoZW1lX2xpYiA9IExvYWRM aWJyYXJ5KCJ1eHRoZW1lLmRsbCIpOwogICAgICAgU2V0V2luZG93VGhlbWVfZm4gPSAoU2V0V2lu ZG93VGhlbWVfUHJvYykKIAlnZXRfcHJvY19hZGRyICh1eHRoZW1lX2xpYiwgIlNldFdpbmRvd1Ro ZW1lIik7Ci0KLSAgICAgIC8qIENoZWNrIFdpbmRvd3MgUmVnaXN0cnkgZm9yIHN5c3RlbSB0aGVt ZSBhbmQgc2V0IHczMl9kYXJrbW9kZS4KLQkgVE9ETzogIk5pY2UgdG8gaGF2ZSIgd291bGQgYmUg dG8gY3JlYXRlIGEgbGlzcCBzZXR0aW5nICh3aGljaAotCSBkZWZhdWx0cyB0byB0aGlzIFdpbmRv d3MgUmVnaXN0cnkgdmFsdWUpLCB0aGVuIHJlYWQgdGhhdCBsaXNwCi0JIHZhbHVlIGhlcmUgaW5z dGVhZC4gVGhpcyB3b3VsZCBhbGxvdyB0aGUgdXNlciB0byBmb3JjaWJseQotCSBvdmVycmlkZSB0 aGUgc3lzdGVtIHRoZW1lICh3aGljaCBpcyBhbHNvIHVzZXItY29uZmlndXJhYmxlIGluCi0JIFdp bmRvd3Mgc2V0dGluZ3M7IHNlZSBNUy1XaW5kb3dzIHNlY3Rpb24gaW4gRW1hY3MgbWFudWFsKS4g Ki8KLSAgICAgIExQQllURSB2YWwgPQotCXczMl9nZXRfcmVzb3VyY2UgKCJTb2Z0d2FyZVxcTWlj cm9zb2Z0XFxXaW5kb3dzXFxDdXJyZW50VmVyc2lvblxcVGhlbWVzXFxQZXJzb25hbGl6ZSIsCi0J CQkgICJBcHBzVXNlTGlnaHRUaGVtZSIsCi0JCQkgIE5VTEwpOwotICAgICAgaWYgKHZhbCAmJiAq dmFsID09IDApCi0JdzMyX2Rhcmttb2RlID0gVFJVRTsKKyAgICAgIC8qIFNldCB0aGUgcHJlZmVy cmVkIG1vZGUgZnJvbSBPUyBzZXR0aW5ncy4gICovCisgICAgICB3MzJfZGFya21vZGUgPSB3MzJf cXVlcnlkYXJrbW9kZSgpOwogICAgIH0KIAogICBleGNlcHRfY29kZSA9IDA7Ci0tIAoyLjM1LjAu d2luZG93cy4xCgo= --_002_CH2PR12MB4231CFB23C02AB61B8FD8C14A5239CH2PR12MB4231namp_--