From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: =?utf-8?Q?Gerd_M=C3=B6llmann?= Newsgroups: gmane.emacs.devel Subject: Re: Q: child frames on ttys Date: Wed, 21 Aug 2024 14:00:44 +0200 Message-ID: References: <86ikvz302s.fsf@gnu.org> <132fd5ff-bcdf-4d93-acab-186e52f80d9a@gmx.at> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="28012"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: Eli Zaretskii , emacs-devel@gnu.org To: martin rudalics Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Aug 21 14:01:42 2024 Return-path: Envelope-to: ged-emacs-devel@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 1sgk21-0007Bw-Pu for ged-emacs-devel@m.gmane-mx.org; Wed, 21 Aug 2024 14:01:41 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sgk1M-0000Sr-Kh; Wed, 21 Aug 2024 08:01:00 -0400 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 1sgk1D-0000QU-54 for emacs-devel@gnu.org; Wed, 21 Aug 2024 08:00:55 -0400 Original-Received: from mail-ej1-x629.google.com ([2a00:1450:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sgk1B-0004On-3P; Wed, 21 Aug 2024 08:00:50 -0400 Original-Received: by mail-ej1-x629.google.com with SMTP id a640c23a62f3a-a83597ce5beso116691166b.1; Wed, 21 Aug 2024 05:00:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724241647; x=1724846447; darn=gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fL84YKGE3Z8rW3VP/bs2L/maVO5ZYqd5l4T2FWotj8Q=; b=MVuV8YDghzXSoR6IQQISHpy39R4CJdfqAHnJm4Z3sMW3SWfOAOnsdRh9tSotxggINd vc9/kWRuTf2MTgcAxUNOWI7LHtU2IJ8JqETCrANc+CHIhP0i4QdvVuu/MU3EWigU0qLB xjqLHxRVWiJ/L3QpNTkqWu3GKbLTTs2zF7Q4vOZWnTbdisTVBXpsDtaFQSAV97xhwVrU mdiwvSf78XpgwY1kmcFad2/DXp0BWMtISM04QyViVwjPVP6YScDTewA+2vyu1U+2FksJ +C0Vakm3XnRWwce+SG/5XIw22kow2GvH1eASEE40AtMBezLd20YJKApPdnP5Aa+G8JYi 3ANA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724241647; x=1724846447; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=fL84YKGE3Z8rW3VP/bs2L/maVO5ZYqd5l4T2FWotj8Q=; b=IPVoY2Om77BEqqaXe997fwxop5FRgSnH6+E7JzXmTv9qKOyRI4Fjs23uWvVXju5oLU kiQkKRIvwDl06YixhyvC/9zrOmqgKeavq/M3pxiGcABsKJ6fSnRhxqW/uImnxZJOVETv FS59TiFLnZnaJjz2mjPah4W4TowF3fNHhvQWGJQLP+vjJjMULUTb8hacDSkQ/KuudTID +64vez0vFmGmb3u+mwYYdi7GGmLX7zCB4PBgst7J7U9C5x9YujoZc/U6+Srl7h90X1n7 /nBy566ICybNQr+O6FB14ERhZXz7tJv0qeNFG/HTx/vDsfdWvEFcG27Uft27rbaFBLkd Bf4g== X-Forwarded-Encrypted: i=1; AJvYcCX165vIyPY9KogBYdZHErMc+V+/tXLP+CO2bccXRy0OAZoboSrVFlo5zdaogAJJPqHQ2NS3+PuiD2+7Cg==@gnu.org X-Gm-Message-State: AOJu0Yw0a3BsGRJapEi1dUU+7upSEm0AzdWRDUj7HtuZ9PsZQXfUljra LIyLW6y2GjJNASOyZ33VcEklLYLXIl7EvwEKyRw1PyQJLqAqTsguAMb+6w== X-Google-Smtp-Source: AGHT+IEXGnVX7LTGWnhb1iEhu6hj69k7k39c9Ls9nowcnWS849r/FZuKOkoGX2HwUS7TOYxw2xbZ4A== X-Received: by 2002:a17:907:7e85:b0:a72:7b17:5d68 with SMTP id a640c23a62f3a-a866ff4b34cmr150319966b.3.1724241646304; Wed, 21 Aug 2024 05:00:46 -0700 (PDT) Original-Received: from pro2.fritz.box (p4fe3ae30.dip0.t-ipconnect.de. [79.227.174.48]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a83838c6ac5sm899603966b.18.2024.08.21.05.00.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Aug 2024 05:00:45 -0700 (PDT) In-Reply-To: ("Gerd =?utf-8?Q?M=C3=B6llman?= =?utf-8?Q?n=22's?= message of "Wed, 21 Aug 2024 09:10:41 +0200") Received-SPF: pass client-ip=2a00:1450:4864:20::629; envelope-from=gerd.moellmann@gmail.com; helo=mail-ej1-x629.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, 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-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:323001 Archived-At: Gerd M=C3=B6llmann writes: > Gerd M=C3=B6llmann writes: > * What we have > > Child frames are created with the =3Dparent-frame=3D frame parameter on > GUIs. This parameter can be changed at any time to create a hierarchy > of child fremes. It can be reset to make a frame a non-child frame. > > A terminal's =3Dtty_display_info=3D contains a =3Dtop_frame=3D member whi= ch is the > topmost frame in z-order, where z-order is a bit misleading because > all frames currently occupy the whole terminal screen. IOW making a > frame the topmost frame obsures all other frames. > > Redisplay considers topmost frames only (more than one for multiple > terminals). > > The function =3Dframe-restack=3D can be used to change the z-order of > frames. It currently does not handle tty frames. > > =3Dframe-list=3D contains child frames. > > * Terminology > > A =3Droot frame=3D is a frame with no parent frame. It always occupies the > whole terminal. > > * Steps > > 1. Let frames have arbitrary ~(x, y, w, h)~ except for root frames, > which have ~(0, 0, terminal-width, terminal-height)~. Change > =3Dframe-geometry=3D. > > 2. Give root frames a =3Dchild_frames=3D list which is in z-order, topmost > last. Add a =3Dtty-frame-restack=3D which acts on this list. > > 3. In =3Dredisplay_internal=3D, act only on root frames. Generating desir= ed > glyphs generates glyphs for the root frame, then child frames in > z-order, topmost last, i.e. in the order of =3Dframe::child_frames=3D. > > 4. Making a frame visible means making all children frames visible. > > 5. Do not clear the terminal, unless switching to another root frame. > > 6. Update: Build frame matrices for all windows visible on a terminal. > Copy visible parts of child fraem desired glyphs to root frame > desired glyphs. Then write to the screen. > > 7. After writing to the screen, copy visble parts of root frame > current glyphs to current glyphs of children. Changed this to: 7. After writing to the screen, for all child frames that were displayed, update current matrices from desired matrices. There is no need to copy glyphs from the root frame since we have them already in the desired matrix. > 8. Add something like =3Dns-frame-list-z-order=3D for ttys. > > * Don't > > 1. Allocate child frame glyphs from a common pool. Reason is clipping. > Don't want to change glyph generation in redisplay to take clipping > into account. It's not worth the effort.