2016-08-01 7 views
0

Я кодирую клиентский буфер обмена x11, и мне сложно работать с INCR. Основном, моя проблема в том, что, когда я называю XDeleteProperty, чтобы начать передачу INCR, я получил код ошибки BadRequestXDeleteProperty возвращает ошибку BadRequest

Вот отрывок:

if (type == ctx->incr_atom) 
    { 
     ctx->pendingIncr.status = INCR_REQUEST_NEW; 

     if(XGetWindowProperty(ctx->display, ctx->window, 
         ctx->property_atom, 0, remaining, FALSE, AnyPropertyType, 
         &type, &format_property, &length, &remaining, &data) == Success) 
     { 
      fprintf(stderr, "Getting window property : %lu bytes fetched\n", length); 
     } 
     else 
     { 
      fprintf(stderr, "Failed getting window property\n"); 
     } 

     error = XDeleteProperty(ctx->display, ctx->window, ctx->property_atom); 

     if(error == Success) 
     { 
      fprintf(stderr, "Entering INCR Protocol!\n"); 
     } 
     else 
     { 
      fprintf(stderr, "Failed deleting window property : error code %d\n", error); 
     } 

     XFlush(ctx->display); 
     return 1; 
    } 
+0

По моему опыту BadRequest - это то же самое, что и «не реализовано». По моему мнению, вы можете удалить параметр удаления свойства true и bytes_after_return to 0 в XGetWindowProperty. Это может объяснить, почему XDeleteProperty может не реализоваться. Удаляется ли путем установки параметров delete и bytes_after_return допустимого действия в вашем случае? Можете ли вы «улучшить» свой вопрос, чтобы было более ясно, что вы ожидаете от ответа? http://linux.die.net/man/3/xgetwindowproperty – Andreas

+0

Это может быть ошибка в X. Действительно ли свойство действительно удалено? –

ответ

0

я узнал, глядя на исходный код Xlib, если возвращение код 1 - исключение BadRequest, возвращение XDeleteProperty ВСЕГДА 1 ... полезно знать!