From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Daniel Colascione Newsgroups: gmane.emacs.devel Subject: Re: trunk r116456: Improve dbus performance on synchronous calls Date: Mon, 17 Feb 2014 08:17:43 -0800 Message-ID: <53023627.1060001@dancol.org> References: <87lhx9lo4y.fsf@gmx.de> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1392653876 18514 80.91.229.3 (17 Feb 2014 16:17:56 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 17 Feb 2014 16:17:56 +0000 (UTC) Cc: emacs-devel@gnu.org To: Michael Albinus Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Feb 17 17:18:04 2014 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1WFQtP-0007Am-M8 for ged-emacs-devel@m.gmane.org; Mon, 17 Feb 2014 17:18:03 +0100 Original-Received: from localhost ([::1]:42476 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WFQtP-0001Xm-6d for ged-emacs-devel@m.gmane.org; Mon, 17 Feb 2014 11:18:03 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:45746) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WFQtF-0001OE-QC for emacs-devel@gnu.org; Mon, 17 Feb 2014 11:17:59 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WFQt9-0004fV-Le for emacs-devel@gnu.org; Mon, 17 Feb 2014 11:17:53 -0500 Original-Received: from dancol.org ([2600:3c01::f03c:91ff:fedf:adf3]:33152) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WFQt9-0004fE-2t for emacs-devel@gnu.org; Mon, 17 Feb 2014 11:17:47 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=dancol.org; s=x; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:References:Subject:CC:To:MIME-Version:From:Date:Message-ID; bh=4DvLR0dxXNoSbmW1ljGT9JzeWQG+VNI2Nh3X1KlIkD4=; b=U9phCl3hMhAiy3MhIkviwuBCbwm+eR7w+AEYMB1y1z1TFhVKDruajlkf1pW4KPFu4hrlimhww7Fe2oiRrHspcheWQ5RCoIFBb2/I/kt1eknFnwNnl+P8WHyo3Tb3DZJgZR2BtLjIC5/+zIZU//IzxGV9oYY25pgiO9B1emYQyu9pVSl+I4poemH1u9w2N/cuy9F0YdrCjh4Ll2y+1JzrRmjKXfetuMqlW2v6wcCfRCa1nLcHvcgeGprT3qJNGYXRmd1jeC7JpmuCIXoJz/qCug3S9R4neHDoSbXW2l30+DaaDkCJ6ZAtgks9nneRphVTJUiC6tartHy2uNyvQMM5LQ==; Original-Received: from c-76-104-210-106.hsd1.wa.comcast.net ([76.104.210.106] helo=[192.168.1.50]) by dancol.org with esmtpsa (TLS1.0:DHE_RSA_CAMELLIA_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1WFQt7-0000pk-6F; Mon, 17 Feb 2014 08:17:45 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 In-Reply-To: <87lhx9lo4y.fsf@gmx.de> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2600:3c01::f03c:91ff:fedf:adf3 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:169697 Archived-At: On 02/17/2014 08:06 AM, Michael Albinus wrote: > Daniel Colascione writes: > >> (with-timeout ((if timeout (/ timeout 1000.0) 25)) >> (while (eq (gethash key dbus-return-values-table :ignore) :ignore) >> - (let ((event (let ((inhibit-redisplay t) unread-command-events) >> - (read-event nil nil 0.1)))) >> - (when (and event (not (ignore-errors (dbus-check-event event)))) >> - (setq unread-command-events >> - (append unread-command-events (list event))))))) >> + (let ((event (let ((inhibit-redisplay t) unread-command-events) >> + (read-event nil nil check-interval)))) >> + (when event >> + (push event unread-command-events)) >> + (when (< check-interval 1) >> + (setf check-interval (* check-interval 1.05)))))) > > Why `push'? It adds the event on top of `unread-command-events', > changing the event order when there are already events in that list. Hrm. I was getting it from sit-for: (let ((read (read-event nil t seconds))) (or (null read) (progn ;; If last command was a prefix arg, e.g. C-u, push this event onto ;; unread-command-events as (t . EVENT) so it will be added to ;; this-command-keys by read-key-sequence. (if (eq overriding-terminal-local-map universal-argument-map) (setq read (cons t read))) (push read unread-command-events) nil))) Speaking of which, shouldn't the dbus code just look like this? (with-timeout ((if timeout (/ timeout 1000.0) 25)) (while (eq (gethash key dbus-return-values-table :ignore) :ignore) (sit-for check-interval t) (when (< check-interval 1) (setf check-interval (* check-interval 1.05)))))