J'ai un problème avec XCB. Je ne comprends pas la différence entre les types *_reply_t
et *_request_t
.reply_t vs request_t - les transmettre de façon interchangeable?
Il semble que le *_reply_t
est passé à la place du *_response_t
, mais les structures sont très différentes.
Par exemple:
xcb_randr_get_screen_resources_current_reply_t *reply = xcb_randr_get_screen_resources_current_reply(
connection, xcb_randr_get_screen_resources_current(connection, root), NULL);
Alors maintenant reply
est le type de *_reply_t
. Mais maintenant, je dois utiliser xcb_randr_get_screen_resources_current_outputs
qui attend le premier argument est de type xcb_randr_get_screen_resources_current_request_t
selon les docs ici:
http://www.linuxhowtos.org/manpages/3/xcb_randr_get_screen_resources_current_outputs.htm
xcb_randr_output_t *xcb_randr_get_screen_resources_current_outputs(
const xcb_randr_get_screen_resources_current_request_t *reply
);
Cependant, la réponse du premier appel est de type xcb_randr_get_screen_resources_current_reply_t
(*_reply_t
). Comment est-il possible de passer cela dans l'appel des sorties sans lancer? Les structures sont complètement différentes par la docs:
typedef struct xcb_randr_get_screen_resources_current_reply_t {
uint8_t response_type;
uint8_t pad0;
uint16_t sequence;
uint32_t length;
xcb_timestamp_t timestamp;
xcb_timestamp_t config_timestamp;
uint16_t num_crtcs;
uint16_t num_outputs;
uint16_t num_modes;
uint16_t names_len;
uint8_t pad1[8];
} xcb_randr_get_screen_resources_current_reply_t;
Et le struct pour le *_request_t
est pas dans la documentation que je l'ai obtenu à partir du code source ici:
https://xcb.freedesktop.org/manual/randr_8h_source.html#l00896
typedef struct xcb_randr_get_screen_resources_current_request_t {
uint8_t major_opcode;
uint8_t minor_opcode;
uint16_t length;
xcb_window_t window;
} xcb_randr_get_screen_resources_current_request_t;
je ctypes donc je dois déclarer le type que je vais passer à l'avance pour la signature de la méthode. Donc, je suis très confus sur la façon dont quelque chose d'une structure totalement différente (reply
) va dans un deuxième appel qui a la structure de request
.
Ohhh c'est correct! La signature de méthode n'utilise pas cela dans ce fichier de code. Doc erreur à coup sûr. Merci beaucoup! Correction du 'response' à' request' dans le post :) – Noitidart