Re: Xinerama

Thomas Adam <[email protected]> Sat, 20 Nov 2021 22:24:46 +0000
Newsgroups gmane.comp.window-managers.fvwm.devel
Message-ID <20211120222446.hznwa3pmvphcw2rn@moo>
On Sat, Nov 20, 2021 at 03:54:10PM +0100, Dominik Vogt wrote:
> On Sat, Nov 20, 2021 at 02:15:58PM +0000, Thomas Adam wrote:
> > On Sat, Nov 20, 2021, 14:13 Dominik Vogt <[email protected]> wrote:
> >
> > > Is Xinerama still useful for anything or can we remove it?
> > >
> > It has already been removed. Where are you seeing references to it?
> 
> Everywhere.  I'll remove the junk on the parser branch.
> 
>  $ rgrep -i xinerama . 2> /dev/null
> ./libs/defaults.h:/*** Xinerama ***/
> ./libs/defaults.h:#define DEFAULT_XINERAMA_ENABLED        True /* Xinerama on by default */
> ./libs/defaults.h:#define XINERAMA_CONFIG_STRING             "XineramaConfig"

These can go, and the corresponding callers in FvwmForm can be changed.  This
looks to be the mechanism module used to use to register Xinerama interest.

> ./libs/FTips.c:	fscreen_scr_arg *fsarg = NULL; /* for now no xinerama support */

That comment is misleading and can be changed,

> ./modules/FvwmForm/FvwmForm.c:  if (strncasecmp(buf, XINERAMA_CONFIG_STRING,
> ./modules/FvwmForm/FvwmForm.c:		  sizeof(XINERAMA_CONFIG_STRING)-1) == 0)
> ./modules/FvwmForm/FvwmForm.c:    FScreenConfigureModule(buf + sizeof(XINERAMA_CONFIG_STRING)-1);
> ./modules/FvwmForm/FvwmForm.c:		buf, XINERAMA_CONFIG_STRING, sizeof(XINERAMA_CONFIG_STRING)-1)
> ./modules/FvwmForm/FvwmForm.c:		FScreenConfigureModule(buf + sizeof(XINERAMA_CONFIG_STRING)-1);

See above.

> ./modules/FvwmButtons/FvwmButtons.h:void handle_xinerama_string(char *args);

That's just a function declaration without an implementation and can be
removed.

> ./.git/rr-cache/1c03ad931074cd97196af43ae2fc0134a13171cd/preimage:directly adjacent to the screen's or xinerama screen's border. It
> ./.git/rr-cache/d3fcccba50db8b879e64033b3c5f2ebe88fa6f57/preimage:directly adjacent to the screen's or xinerama screen's border. It

rerere cache from git so will ignore.

> ./doc/fvwm3_commands.ad:directly adjacent to the screen's or xinerama screen's border. It
> ./doc/fvwm3all.1:directly adjacent to the screen\(cqs or xinerama screen\(cqs border. It
> ./doc/fvwm3_styles.ad:directly adjacent to the screen's or xinerama screen's border. It
> ./doc/fvwm3styles.1:directly adjacent to the screen\(cqs or xinerama screen\(cqs border. It
> ./doc/fvwm3_manpage_source.adoc:directly adjacent to the screen's or xinerama screen's border. It

These can change to either mention RandR, or just "screen".

> ./fvwm/windowlist.c:	 * because it sets the xinerama screen origin */
> ./fvwm/add_window.c:	fw->edge_resistance_xinerama_move =
> ./fvwm/add_window.c:		pstyle->edge_resistance_xinerama_move;
> ./fvwm/move_resize.c:	 * in case Xinerama is used. */
> ./fvwm/move_resize.c:	/* Resist moving windows between xineramascreens */
> ./fvwm/move_resize.c:	if (fw->edge_resistance_xinerama_move)
> ./fvwm/move_resize.c:		    scr_x1 + fw->edge_resistance_xinerama_move)
> ./fvwm/move_resize.c:			fw->edge_resistance_xinerama_move)
> ./fvwm/move_resize.c:		    scr_y1 + fw->edge_resistance_xinerama_move)
> ./fvwm/move_resize.c:			fw->edge_resistance_xinerama_move)


Funtionally now referencing RandR and are poorly named as xinerama isn't used.

> ./fvwm/style.c:	if (add_style->flags.has_edge_resistance_xinerama_move)
> ./fvwm/style.c:		SSET_EDGE_RESISTANCE_XINERAMA_MOVE(
> ./fvwm/style.c:			SGET_EDGE_RESISTANCE_XINERAMA_MOVE(*add_style));
> ./fvwm/style.c:			unsigned has_xinerama_move;
> ./fvwm/style.c:				has_xinerama_move = 0;
> ./fvwm/style.c:				has_xinerama_move = 1;
> ./fvwm/style.c:				has_xinerama_move = 0;
> ./fvwm/style.c:			ps->flags.has_edge_resistance_xinerama_move =
> ./fvwm/style.c:				has_xinerama_move;
> ./fvwm/style.c:			ps->flag_mask.has_edge_resistance_xinerama_move = 1;
> ./fvwm/style.c:			ps->change_mask.has_edge_resistance_xinerama_move = 1;
> ./fvwm/style.c:			SSET_EDGE_RESISTANCE_XINERAMA_MOVE(*ps, val[1]);
> ./fvwm/fvwm.h:	char	*IconScreen;                       /* Xinerama screen */
> ./fvwm/fvwm.h:	unsigned has_edge_resistance_xinerama_move : 1;
> ./fvwm/fvwm.h:	int edge_resistance_xinerama_move;
> ./fvwm/fvwm.h:	int edge_resistance_xinerama_move;

As above.  This just needs renaming.

> ./fvwm/commands.h:	F_XINERAMA,
> ./fvwm/commands.h:	F_XINERAMAPRIMARYSCREEN,
> ./fvwm/commands.h:	F_XINERAMASLS,
> ./fvwm/commands.h:	F_XINERAMASLSSCREENS,
> ./fvwm/commands.h:	F_XINERAMASLSSIZE,
> ./fvwm/commands.h:void CMD_Xinerama(F_CMD_ARGS);
> ./fvwm/commands.h:void CMD_XineramaPrimaryScreen(F_CMD_ARGS);
> ./fvwm/commands.h:void CMD_XineramaSls(F_CMD_ARGS);
> ./fvwm/commands.h:void CMD_XineramaSlsScreens(F_CMD_ARGS);
> ./fvwm/commands.h:void CMD_XineramaSlsSize(F_CMD_ARGS);


These can be removed as they're just declarations without implementation.y

> ./fvwm/screen.h:		unsigned has_xinerama_state_changed : 1;

Related to code in fvwm/update. -- no longer used.

> ./fvwm/module_interface.h:void broadcast_xinerama_state(void);

No longer used, but kept round to avoid changing so many callers in modules.

> ./fvwm/placement.c:		 * Xinerama screen.  1: The intuitive way giving a geometry
> ./fvwm/placement.c:		 * 2: Do NOT specify a Xinerama screen (or specify it to be
> ./fvwm/functable.c:	/* - Move a window to another Xinerama screen */

Comments need updating.  No functional change here.

> ./fvwm/style.h:#define SGET_EDGE_RESISTANCE_XINERAMA_MOVE(s) \
> ./fvwm/style.h:	((s).edge_resistance_xinerama_move)
> ./fvwm/style.h:#define SSET_EDGE_RESISTANCE_XINERAMA_MOVE(s,x) \
> ./fvwm/style.h:	((s).edge_resistance_xinerama_move = (x))

As mentioned above, these still behave the same way with RandR but are
misnamed now that Ximerama isn't being used.

> ./fvwm/menuparameters.h:	/* A position on the Xinerama screen on which the menu should be
> ./fvwm/menuparameters.h:	/* A position on the Xinerama screen on which the menu should be

Misleading comment.

> ./fvwm/menus.c:	Bool fHasContext, fUseItemOffset, fRectangleContext, fXineramaRoot;
> ./fvwm/menus.c:	fXineramaRoot = False;
> ./fvwm/menus.c:		else if (StrEquals(tok,"xineramaroot"))
> ./fvwm/menus.c:			fXineramaRoot = True;
> ./fvwm/menus.c:					/* xinerama: emergency fallback */
> ./fvwm/menus.c:					/* xinerama: emergency fallback */
> ./fvwm/menus.c:				/* xinerama: use global screen as reference */
> ./fvwm/menus.c:				/* xinerama: use screen with pinter as
> ./fvwm/menus.c:				if (fXineramaRoot)
> ./fvwm/menus.c:					/* xinerama: use screen that contains
> ./fvwm/menus.c:					/* xinerama: use screen that contains

As with SSET_EDGE_RESISTANCE_XINERAMA_MOVE, this can be renamed if necessary.


> ./fvwm/update.c:		if (Scr.flags.has_xinerama_state_changed)
> ./fvwm/update.c:	Scr.flags.has_xinerama_state_changed = 0;

These can go.

> ./perllib/FVWM/Tracker/GlobalConfig.pm:    my $xinerama_info = $config_tracker->data('XineramaConfig');
> ./perllib/FVWM/Commands.pm:		descr => q{Move a window to another Xinerama screen},
> ./perllib/FVWM/Commands.pm:		name => 'Xinerama',
> ./perllib/FVWM/Commands.pm:		descr => q{Control Xinerama support},
> ./perllib/FVWM/Commands.pm:		name => 'XineramaPrimaryScreen',
> ./perllib/FVWM/Commands.pm:		descr => q{Identify Xinerama primary screen},
> ./perllib/FVWM/Commands.pm:		name => 'XineramaSls',
> ./perllib/FVWM/Commands.pm:		name => 'XineramaSlsScreens',
> ./perllib/FVWM/Commands.pm:		name => 'XineramaSlsSize',

Can be removed.

> ./bin/fvwm-config.in:with_xinerama=@with_xinerama@
> ./bin/fvwm-config.in:			test "$with_xinerama"   = "yes" && echo "xinerama"
> ./bin/fvwm-config.in:			echo "	xinerama (multi-head): $with_xinerama"
> ./bin/fvwm-config:with_xinerama=@with_xinerama@
> ./bin/fvwm-config:			test "$with_xinerama"   = "yes" && echo "xinerama"
> ./bin/fvwm-config:			echo "	xinerama (multi-head): $with_xinerama"

Can be renamed to RandR, although I can't say fvwm-config is useful any more.

I don't really see much functional change in this list.

-- Thomas