Minsub LEE reported on IRC that his pc froze when he
launched flying_ggis with fbdev target. Here are some
infos about his machine:
Kernel : linux-2.6.15-26
Distrib: Ubuntu Dapper
He also have DirectFB-0.9.25-1 installed.
The strange part is that the ggi demos ran without a
problem. The difference between them is that in demos
we set the mode by hand (with nearly all the members
set to GGI_AUTO), and in flying_ggis we call
ggiParseMode("", &vis_mode).
So we used the demos version, and Minsub reported that
everything worked. I attached the diff.
The logs are available at the following location:
http://splug.byus.net/wiki/wiki.php/msg
diff file
Logged In: YES
user_id=476156
Here's the diff
Logged In: YES
user_id=1559541
"/demo/stars" has a same problem. It uses ggiSetSimpleMode().
So I put a line from demo, set mode menually. After puting
that, it is working well. Fedora5 also has a same problem.
***Below is line what I used, Mooz told me***
ggi_mode mode = { /* This will cause the default mode.. */
1, /* 1 frame [???] */
{GGI_AUTO,GGI_AUTO}, /* Default size */
{GGI_AUTO,GGI_AUTO}, /* Virtual */
{0,0}, /* size in mm don't care */
GT_AUTO, /* Mode */
{GGI_AUTO,GGI_AUTO} /* Font size */
};
Logged In: YES
user_id=972775
From looking at the logs, the difference seems to be that
checkmode does not set frames to a non-zero number. This
makes setmode misbehave. Now, checkmode is not intended to
return GGI_AUTO for any mode members, but that shouldn't
really matter, but it does since setmode calls checkmode
internally to fill in any GGI_AUTO members (and to
otherwise check if the requested mode works). And the
second call to checkmode doesn't fill in the number of
frames either, so setmode ends up trying to set a mode
with zero frames which doesn't work...
The culprit seems to be these lines:
maxframes = priv->orig_fix.smem_len /
(sug->virt.x * sug->virt.y *
GT_ByPP(sug->graphtype));
if (sug->frames > maxframes) {
sug->frames = maxframes;
}
at the end of the _GGI_fbdev_checkmode_adjust function in
libggi/display/fbdev/mode.c.
Can someone check if commenting out those lines works
around the problem?