2011-05-08 1 views
0

좀 통합 테스트를위한 가짜 창을 만들려면 다음 코드를 사용하고 있습니다 : 원본 코드의 수정 된 버전이 더 적은 공간을 차지하는 것입니다 위의XCreateWindow는 오류에 CentOS 5.6에 실패 BadValue

class CXWindowsClipboardTests 
{ 
protected: 
    virtual void 
    SetUp() 
    { 
     m_display = XOpenDisplay(NULL); 
     int screen = DefaultScreen(m_display); 
     Window root = XRootWindow(m_display, screen); 

     XSetWindowAttributes attr; 
     attr.do_not_propagate_mask = 0; 
     attr.override_redirect = True; 
     attr.cursor = Cursor(); 

     m_window = XCreateWindow(
      m_display, root, 0, 0, 1, 1, 0, 0, 
      InputOnly, CopyFromParent, 
      CWDontPropagate | CWEventMask | 
      CWOverrideRedirect | CWCursor, 
      &attr); 
    } 

    virtual void 
    TearDown() 
    { 
     XDestroyWindow(m_display, m_window); 
     XCloseDisplay(m_display); 
    } 
}; 

을 (full source code 참조).

위의 코드는 다음과 같은 오류에 CentOS 5.6에 간헐적으로 실패

X Error of failed request: BadValue 
    (integer parameter out of range for operation) 
    Major opcode of failed request: 1 (X_CreateWindow) 
    Value in failed request: 0x844b530 
    Serial number of failed request: 7 
    Current serial number in output stream: 8 

그래서, 두 가지 질문에 정말 :

  • 무엇 XCreateWindow이 방법으로 간헐적에 CentOS에 실패 할 수 있을까?
  • 그리고 저는 X 개발이 새로 도입되어 다양한 오류 값의 의미 (예 : 실패한 요청의 값) 또는 사용 방법을 알 수 없습니다. 누군가 나를 간단히 설명해 줄 수 있겠습니까?

답변

1

CWEventMask을 사용하고 있지만 attr.event_mask은 초기화하지 않았습니다. 이것은 귀하의 문제 일 수 있습니다. (구조체가 스택 상에 생성 되었기 때문에 그 필드에 임의의 데이터가 포함될 것입니다.)

+0

감사합니다. 통합 테스트에서 실제 환경을 복제하려고했지만 클립 보드로 작업하고 있기 때문에 아마도 valuemask를 0으로 가질 수 있습니다. –

+0

오늘 그린 빌드가 트릭을 완료 한 것 같습니다! 건배. –