Re: Nonreentrant svgalib

Search this archive.

From: Matan Ziv-Av (matan@svgalib.org)
Date: Sun 14 Jul 2002 - 16:40:17 IDT


On Sun, 14 Jul 2002 clock@atrey.karlin.mff.cuni.cz wrote:

> SVGALib is nonreentrant in the sense that when I bing SVP as a PDF viewer into
> the Links browser, Links blocks the terminal and forks to run SVP. SVP gets
> stuck in a text mode. BTW, ZGV also gets stuck when I bind it there.
> 
> Links blocks the terminalby calling vga_setmode(TEXT).

This is a hard question. vga_setmode(TEXT) still leaves part of svgalib
(signal handlers at least, but probably some more). What you need is
instead of vga_setmode(TEXT), some call vga_uninit(), which sets text
mode, restores signal handlers, unmaps memory, and maybe more. With such
a call, an svgalib program that wants to exec another svgalib program
will need to call vga_uninit before fork+exec, and vga_init() again
after.

Until such a function is implemented, I think the best solution is to
include svp code (with slight changes) into links.

Another solution is to implement a "plugin mode" in svp, in which, it
does not call any svgalib calls, but only mmaps the linear buffer from
/dev/svga, and uses the mode parameters passed to in command line, or
the environment. In such case, links needs to setup the correct mode and
palette, and pass the parameters to svp.


-- 
Matan Ziv-Av.                         matan@svgalib.org



------------------------------------------------------------------
Unsubscribe:  To:   listbot@svgalib.org
              Body: unsubscribe linux-svgalib


This archive was generated by hypermail 2.1.4 : Wed 21 Jan 2004 - 22:10:25 IST