Hi
I am experiencing a graphics corruption issue.
Hardware: Intel CE4100, hyperthreading enabled
Distro: Meego 1.2
Mutter: mutter-2.31.5_1.1-7.1
Clutter: clutter-1.8.2-6.1
Cogl: cogl-1.8.2-2.1
I compiled cogl with the following spec:
%configure --disable-static \
--enable-gtk-doc \
--enable-gl \
--disable-gles1 \
--disable-gles2 \
--enable-glx
I subsequently compiled clutter with the following spec:
%configure --disable-static \
--disable-maintainer-flags \
--enable-gtk-doc \
--enable-xinput \
--with-flavour=glx
The nature of the graphics corruption is that the graphics image displays, but
there is a coarse, regular pattern superimposed that is shaped like a "grid"
and looks as though it is filled with "white noise" (similar to analogue tv
reception, ie 5% big bang theory).
In our actual GUI code, we see the corruption for a period dependant on the
nice value we launch the python code with. It disappears, or is hidden, if we
re-nice our code to an uber high value
eg nice -n -15 python test.py .
If we re-nice to a lower priority, the corruption remains on the screen for a
longer duration, until it remains indefinitely at say a nice value of +10. Eg.
nice -n -10 python gui-code.py
Possibly this suggests there is a thread synchronisation issue in Clutter/Cogl.
The graphics application is written in python.
Below is a a simple test python script, that reproduce the corruption issue
"
import gobject
import transparency # this module is
written in c, see pertinent functions below which sets the alpha rgb via
clutter_x11_set_use_argb_visual(TRUE); and mutter hints
transparency.set_clutter_x11_argb() # must be called before
importing clutter !
import clutter
import clutter.x11
stage = clutter.Stage()
def go_fullscreen():
global stage
print 'canvas.py> stage.show()'
stage.show()
print 'canvas.py> stage.set_fullscreen(True)'
stage.set_fullscreen(True)
print 'canvas.py> stage_x11_window =
clutter.x11.get_stage_window(stage)'
stage_x11_window = clutter.x11.get_stage_window(stage)
print 'canvas.py>
transparency.set_transparency(stage_x11_window)'
transparency.set_transparency(stage_x11_window)
red = clutter.Color(255, 0, 0, 128)
rect = clutter.Rectangle(red)
rect.set_size(200, 500)
rect.set_position(600, 300)
stage.add(rect)
stage.set_size(1280,720)
stage.set_color(clutter.Color(0,0,0,0))
stage.set_use_alpha(True)
stage.show_all()
#gobject.timeout_add(10, go_fullscreen)
go_fullscreen()
clutter.main()
"
WHERE the transparency module has functions/methods below
"
static PyObject *set_clutter_x11_argb(PyObject *self, PyObject *args)
{
printf("transparency.c> clutter_x11_set_use_argb_visual(TRUE);\n");
clutter_x11_set_use_argb_visual(TRUE);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *set_transparency(PyObject *self, PyObject *args)
{
const unsigned int win_id;
int sts;
if (!PyArg_ParseTuple(args, "i", &win_id))
{
return NULL;
}
sts = set_mutter_hints(win_id);
if (sts < 0)
{
PyErr_SetString(TransparencyError, "set_mutter_hints() failed");
return NULL;
}
return PyLong_FromLong(sts);
}
int set_mutter_hints(unsigned int win)
{
Display *display;
Window root;
Atom property;
char *data;
display = XOpenDisplay(NULL);
root = RootWindow(display, DefaultScreen(display));
property = XInternAtom (display, "_MUTTER_HINTS", 0);
data = "meego-tv-half-trans=1:meego-tv-full-window=1";
XChangeProperty(display, win, property, XA_STRING, 8,
PropModeReplace, (unsigned char *)data, strlen(data));
XFlush(display);
return 0;
}
"
I execute the test script as follows
[root]# export DISPLAY=:0.0
[root]# export XAUTHORITY=/home/meego/.Xauthority
[root]# python test_transparency.py
The Corruption further does not appear at all if i do not , via the imported
transparency module, initiate
clutter_x11_set_use_argb_visual(TRUE);
We need the transparency to cut a a whole in graphics plane (plane C) to enable
transparency and make the video plane (plane A), so this is not an option for
us.
ilanga lethu
Timothy Reinhardt
R&D
Altech Multimedia
UEC,Cape Town Office,
8th Floor, 1 Thibault Square,
Foreshore,8001
Cape Town
South Africa
+27 (0) 21-425 5700
+27 (0) 21-425 5688 (fax)
mailto:[email protected]
www.uec.co.za<http://www.uec.co.za/>
________________________________
E-Mail Disclaimer : http://www.altron.co.za/email.asp
Should you have any questions regarding this e-mail legal notice please contact
us on
1. Telephone number : +27315082800
2. Fax number : +2731539 3370
3. E-mail address : [email protected]
_______________________________________________
clutter-app-devel-list mailing list
[email protected]
http://lists.clutter-project.org/listinfo/clutter-app-devel-list