2016-08-01 36 views
0

Ich codiere einen x11-Klemmbrett-Client, und ich bekomme harte Zeit mit INCR. Basicly, mein Problem ist, dass, wenn ich XDeleteProperty auf rufen Sie die INCR Übertragung zu starten, ich habe hier vor sich einen BadRequest FehlercodeXDeleteProperty gibt BadRequest-Fehler zurück

ein Ausschnitt:

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

Nach meiner Erfahrung ist BadRequest das gleiche wie "nicht implementiert". Aus meiner Sicht können Sie einen Parameter zum Löschen der Eigenschaft löschen, indem Sie in XGetWindowProperty auf true und bytes_after_return auf 0 setzen. Dies könnte erklären, warum XDeleteProperty möglicherweise nicht implementiert ist. Ist das Löschen durch Setzen der Parameter delete und bytes_after_recturn in Ihrem Fall eine sinnvolle Vorgehensweise? Können Sie Ihre Frage "verbessern", so dass klarer ist, was Sie von einer Antwort erwarten würden? http://linux.die.net/man/3/xgetwindowproperty – Andreas

+0

Es kann ein Fehler in X sein. Wird die Eigenschaft tatsächlich gelöscht? –

Antwort

0

ich an der Xlib Quellcode der Suche herausgefunden, es sei denn, Rückkehr Code 1 ist BadRequest Ausnahme, die Rückkehr von XDeleteProperty ist IMMER 1 ... gut zu wissen!