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:timothy.reinha...@uec.co.za
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 : i...@altech-multimedia.com
_______________________________________________
clutter-app-devel-list mailing list
clutter-app-devel-list@clutter-project.org
http://lists.clutter-project.org/listinfo/clutter-app-devel-list

Reply via email to