|
From: Antonino D. <ad...@po...> - 2003-03-07 16:18:59
|
On Fri, 2003-03-07 at 23:19, Thomas Winischhofer wrote: > > This works - perfectly, I must say. > > However, the scrolling problem is still here, but I think I know the > reason for this: > > Imagine a console of 120x40 (using the std 8x16 font), on a screen of > 1024x768, using ypanning. > > This uses only 40*16=640 pixels vertically instead of the 768 available. > > The problem is the y panning, and is kind of both console's as well as > the driver's fault: > > When the y panning area reaches its end, it's supposed to copy the > screen to the beginning of this area and pan to position 0. > > However, fbcon calculates p->vrows by info->var.yres_virtual / fontheight. > > This disregards the fact that the visible screen area is actually larger > than the area console is supposed to use. > > Therefore, the calculation of vrows has to take the difference between > these two into account. > > The attached patch fixes this for me but I have no idea if I cought all > possible itches. It will no apply cleanly, because I had made changes to > fbcon.c before making a backup copy - but it sure illustrates the problem. > Right, fbcon never dealt with margins greater than a character width/height before :-). I think your patch will do the Right Thing. As for the one you commented out as INCOMPLETE, my guess is it won't matter since that particular section of code is called only during initialization. An fbcon_switch() will be called later on, I think. > Why you used info->var.yres_virtual (and not the adapted > var.yres_virtual) in fbcon_resize() is beyond me, BTW. > Because info->var will _always_ contain the correct var, so we trust that above all. Tony |