[Xr] What happended to the idea of getting rid of the xrs argument?

Robert Wittams robert at wittams.com
Thu Jun 5 16:41:29 PDT 2003


On Thursday 05 June 2003 19:25, Bill Spitzak wrote:

> box->draw(xrs,x,y,w,h) (which would introduce the fact that XrState
> exists into the supposedly portable fltk header files) or I have to
> use a global variable to hold the current xrs.
>
> I believe this is not fltk-specific, this problem is *extremely*
> common, and the end result is that everybody will have to put the xrs
> into a global variable sometime anyway.

So how the hell does fltk draw on X? Does it just pull Drawables out of 
the air? No, it stores them in global variables. If the rendering 
handle for one system is in a global variable, then its very likely 
that the handle for any other rendering system should be too... 

> Contrary to what some other people seem to think about objects here, 
>  the "box" object has NO idea what "surface" it is drawing on, and I 
>cannot believe this situation is uncommon 

How can a function affect something it can not reference?
Hint: It can't. It has to get a handle from somewhere. Either an 
argument or a global. It may access the global via another function. 
Looking at the fltk code, it seems like less pain for you to just use a 
global in this way. 

from http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/fltk/fltk/fltk/x.h

in the Drawable class, 
store an xrs. 
Switch the global in make_current, just as you do for xid. 
This really is very similar to an xid, or an HWND on win32, or whatever. 

Rob




More information about the cairo mailing list