HomeAbout Us A-Z IndexSearch * Contact Us Register LoginPress Shop

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 1840 Details

Help Show help | Quick Search | Submit a Test Suite Support Request | Click here to view your privileges

This page provides all information on Problem Report 1840.


Report 1840 Actions


    Problem Report Number 1840
    Submitter's Classification Test Suite problem
    State Resolved
    Resolution Test Suite Deficiency (TSD)
    Problem Resolution ID TSD.X.0917
    Raised 1970-01-01 08:00
    Updated 2003-03-13 08:00
    Published 1993-09-24 08:00
    Product Standard X Window System Applications Interface
    Certification Program The Open Brand certification program
    Test Suite VSW version 4.1.1
    Test Identification CH06/cpyar 25
    Problem Summary TSD4W.00095 The test does not check, when copying from a window to another (through XCopyArea), that the source window (or part of it) is not obscured by another window.
    Problem Text
    The test cpyar does not check, when copying from a window to another
    (through XCopyArea), that the source window (or part of it) is not
    obscured by another window.
    Instead, the pixmap used for pixel checking assumes that the source
    window is not obscured.

    In particular, at a certain point the test performs an

    XCopyArea(display, src, dest, gc, 0, 0, 20, 40, 5, 6);

    wehere src has a geometry of 100x90+25+80, and dest is the root window.
    src is partially obscured by another window whose geometry is 100x90+0+0.

    This occurs for an X server with screen dimensions 1024x768, 8 color
    planes and the following visuals:

    XT_VISUAL_CLASSES = PseudoColor(8) DirectColor(8) GrayScale(8)
    StaticGray(8) StaticColor(8) TrueColor(8)



    DETAILED DESCRIPTION.
    --------------------
    Assertion 25 test routine (t025()) can be summarized in the following loop:

    for (all visuals) { /* PseudoColor, DirectColor, GrayScale, ... */
    A create two not overlapping windows namely src and dest, with
    white background, black foreground, black border of
    width 1; dimensions are 100x90;

    B paint 'src' with black;

    C XCopyArea(display, src, dest, gc, 0, 0, 20, 40, 5, 6);

    D Save 'dest' content to use for pixel checks;

    E clear(dest);

    F XSetSubwindowMode(display, gc, IncludeInferiors);

    G create lots of dest subwindows over dest surface:
    5 windows of 10x90 at (0,0); (20,0); ... (80,0).
    45 windows of 10x6 in (x,y) with x=0,20,40,...80 and
    y=0,10,20,...80. These windows have no border.

    H XCopyArea(display, src, dest, gc, 0, 0, 20, 40, 5, 6);

    I check: result of last 2 XCopyArea should be the same;

    J clear(dest);

    K XSetWindowBorderWidth(display, dest, 0);

    L XMoveWindow(display, dest, 0, 0);

    M XCopyArea(display, src, ROOT_WIN, gc, 0, 0, 20, 40, 5, 6);

    N check: result of this XCopyArea should be again the same;
    }

    The "output" of this routine is listed in the following. Windows are named
    with the 'id' used by our server. Error condition is reached at the 3rd loop.


    Step Results
    ---------------------------------------------------------------------------
    LOOP 1 >>>>>>> Visual PseudoColor. <<<<<<<<
    A Created 0x400004 with geometry 100x90+857+386;
    Created 0x400006 with geometry 100x90+880+479;

    B 0x400004 now black;

    C 0x400006 has a black rect in (5,6), dimensions 20x40;

    D -

    E 0x400006 whitened;

    F -

    G -

    H 0x400006 has a black rect in (5,6), dimensions 20x40;

    I check successful;

    J 0x400006 has been cleared; its inferiors not. The result is the
    presence of 2 stripes at (5,6) and (20,6) of dimensions 5x40 over
    0x400006 surface.

    K -

    L 0x400006, geometry 100x90+0+0 and NO border.

    M 0x400006 has a black rect in (5,6), dimensions 20x40;

    N check successful;

    LOOP 2 >>>>>>> Visual DirectColor <<<<<<<
    A Created 0x40003e with geometry 100x90+903+572;
    Created 0x400040 with geometry 100x90+2+665;

    B 0x40003e now black;

    C 0x400040 has a black rect in (5,6), dimensions 20x40;

    D -

    E 0x400040 whitened;

    F -

    G -

    H 0x400040 has a black rect in (5,6), dimensions 20x40;

    I check successful;

    J 0x400040 has been cleared; its inferiors not. The result is the
    presence of 2 stripes at (5,6) and (20,6) of dimensions 5x40 over
    0x400040 surface.

    K -

    L 0x400040, geometry 100x90+0+0 and NO border: this window is exactly
    over 0x400006.

    M 0x400040 has a black rect in (5,6), dimensions 20x40;

    N check successful;

    LOOP 3 >>>>>>> Visual GrayScale <<<<<<<
    A Created 0x400078 with geometry 100x90+25+80;
    Created 0x40007a with geometry 100x90+48+173;
    0x400078 partially occludes 0x400040 which is over 0x400006.

    B 0x400078 now black;

    C 0x40007a has a black rect in (5,6), dimensions 20x40;

    D -

    E 0x40007a whitened;

    F -

    G -

    H 0x40007a has a black rect in (5,6), dimensions 20x40;

    I check successful;

    J 0x40007a has been cleared; its inferiors not. The result is the
    presence of 2 stripes at (5,6) and (20,6) of dimensions 5x40 over
    0x40007a surface.

    K -

    L 0x40007a, geometry 100x90+0+0 and NO border: this window is exactly
    over 0x400040 (which is over 0x400006) and PARTIALLY OCCLUDES
    0x400078 which is the source for the next XCopyArea. THIS CAUSES THE
    FAIL.

    M inside 0x40007a only the rect in (5,15), dimensions 20x31 is
    black, while the test expects that the whole rect in (5,6), dim.
    20x40 is black.

    N check FAILED;;


    SUGGESTED MODIFICATION OF TEST SUITE CODE
    -----------------------------------------
    The t025() routine creates two not overlapping windows and then uses the
    first as source and the other as destination. So the first part of the test
    will never have problems with overlapping windows. In the second part the
    destination is moved to (0,0) of screen and the copy is repeated without
    any check for overlapping conditions between the source and the NEWLY
    positioned destination.
    A possible solution (but we still haven't tested it) could be
    to modify incxy() in module makewin.c to avoid positioning near (0,0).
    The new code would be:

    static void
    incxy(disp, vp)
    Display *disp;
    XVisualInfo *vp;
    {
    unsigned int dwidth, dheight;

    /*
    * Increment the positions so that the windows do not overlap. This
    * is essential for winpair() and useful to see what is happening for
    * the rest. Avoid positions with x or y zero.
    */
    xpos += 23;
    ypos += W_STDHEIGHT+2*BWIDTH+1;

    dwidth = DisplayWidth(disp, vp->screen);
    dheight = DisplayHeight(disp, vp->screen);

    while (ypos+W_STDHEIGHT+2*BWIDTH > dheight)
    ypos -= dheight;
    while (ypos <= (W_STDHEIGHT+2*BWIDTH)) /* WAS: (ypos <= 0) */
    ypos += W_STDHEIGHT;
    while (xpos+(2*BWIDTH+W_STDWIDTH) > dwidth)
    xpos -= dwidth;
    while (xpos <= (2*BWIDTH+W_STDWIDTH)) /* WAS: (xpos <= 0) */
    xpos += W_STDWIDTH;
    }
    Test Output
    Test-Set Name: /tset/CH06/cpyar/cpyar
    -------------------------------------

    Test-Set Results:
    ----------------

    Test-Set Started: 18:23:21

    Test Results:

    ************************************************************************
    /tset/CH06/cpyar/cpyar 25 Failed

    Test Description:
    When subwindow_mode is IncludeInferiors, then neither the
    destination window nor source (if it is a window) is clipped
    by inferiors.


    Test Agency: Olivetti System Tested: i486-5020-EVC
    Test Date: Jul 16, 1993 Page 103 of 415




    X/OPEN Window Management Verification Suite Release 4.1.1
    Test-Set Summary Test-Set Summary



    Test Strategy:
    Place subwindows over parts of the main window
    Create subwindows over these windows as well.
    Do graphics operation.
    Verify that the operation was not affected.

    Test Information:
    Pixel mismatch at (6, 6) (1 - 0)
    See file Err0000.err for details
    Drawing on root window with IncludeInferiors gave incorrect results
    ************************************************************************

    Review Information

    Review Type TSMA Review
    Start Date null
    Completed null
    Status Complete
    Review Recommendation No Resolution Given
    Review Response
    It is accepted that this is a test suite deficiency.

    Review Type SA Review
    Start Date null
    Completed null
    Status Complete
    Review Resolution Test Suite Deficiency (TSD)
    Review Conclusion
    This is an agreed Test Suite Deficiency

    Problem Reporting System Options:

     

    Back   


Contact the Certification Authority