From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: joakim@verona.se Newsgroups: gmane.emacs.devel Subject: problem disabling display optimizaions Date: Wed, 10 Aug 2011 16:06:00 +0200 Message-ID: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: dough.gmane.org 1312985180 14630 80.91.229.12 (10 Aug 2011 14:06:20 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 10 Aug 2011 14:06:20 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Aug 10 16:06:13 2011 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Qr9QD-0001Yr-DH for ged-emacs-devel@m.gmane.org; Wed, 10 Aug 2011 16:06:13 +0200 Original-Received: from localhost ([::1]:51030 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qr9QC-0006s4-RN for ged-emacs-devel@m.gmane.org; Wed, 10 Aug 2011 10:06:12 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:40815) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qr9QB-0006rr-6r for emacs-devel@gnu.org; Wed, 10 Aug 2011 10:06:12 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Qr9Q9-0008WD-Up for emacs-devel@gnu.org; Wed, 10 Aug 2011 10:06:11 -0400 Original-Received: from iwfs.imcode.com ([82.115.149.64]:49276 helo=gate.verona.se) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qr9Q9-0008UW-GY for emacs-devel@gnu.org; Wed, 10 Aug 2011 10:06:09 -0400 Original-Received: from chopper.vpn.verona.se (IDENT:1005@localhost [127.0.0.1]) by gate.verona.se (8.13.4/8.11.4) with ESMTP id p7AE60Kr003086 for ; Wed, 10 Aug 2011 16:06:00 +0200 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4-2.6 X-Received-From: 82.115.149.64 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:143108 Archived-At: I disable display optimizations in the xwidget branch currently because I need to reliably catch redisplays notion about where objects are on the screen. The idea has always been to get back to this and re-enable optimizations in stages. Anyway, so the code to move the xwidgets around on screen was reliable for a very long time. Then I spent some time on the new webkit xwidget which had entirely different issues. Now, when I return to the simpler xwidgets such as buttons and sliders, they no longer moved properly in the buffer. The cause might be changes in redisplay or more likely some error of mine. redraw-display restores proper placement immediately. I can restore the previous behavior by disabling scrolling_window() by making it return early. This function is similar to the try_* fns. Now I would like to verify how redisplay works. The problem happens because fill_xwidget_glyph_string doesn't get called during redisplay any more. This works the same as the other fill_*_glyph_string functions. If display opimizations are completely disabled it should be called. Redisplay tries to optimize away the fill calls by using hardware scrolling if possible. But if the screen is scrolled that way the xwidget won't be notified that Emacs desires its movement(yet). GLYPH_DEBUG allows for disabling of optimizations and I have been using that. GLYPH_DEBUG now compiles here but doesn't disable optimization as I expect. GLYPH_DEBUG listens to these variables: inhibit-try-window-id inhibit-try-window-reusing There ought also be a inhibit-try-window but there isn't for some reason. produce_xwidget_glyph gets called like the other produce_*_glyph functions but at that time we don't know screen placement. so, to summarize, GLYPH_DEBUG doesn't seem to inhibit optimizations as it used to. Disabling scrolling_window() appears to be enough to get xwidgets working again. -- Joakim Verona