La mayoría de los sistemas operativos utilizan Xlib/XCB para su libX11 . Esto ya tiene una marca de cita necesaria, pero creo que es mejor quitarla del artículo. Un vistazo rápido muestra que Ubuntu mantiene XCB en Universe hasta la versión actual (Natty) (lo que probablemente significa que Debian no parece instalarlo por defecto), Fedora no tiene un paquete (?), y Suse podría estar instalándolo por defecto, no puedo decirlo con certeza. Además, el único administrador de ventanas que lo utiliza actualmente (y por lo tanto una razón importante por la que una distribución lo instalaría por defecto) es Awesome_(window_manager) . "Un sistema operativo puede utilizar Xlib/XCB para su libX11" sería una declaración más correcta y compartiría una cita con la siguiente declaración. 64.122.73.112 (discusión) 16:36, 18 de abril de 2011 (UTC)
Envié el protocolo básico de X Window para revisión por pares, ya que tengo la intención de presentarlo como candidato para el estado destacado. Agradecería los comentarios ( página de revisión por pares ). - Liberatore(T) 18:07, 21 de febrero de 2006 (UTC)
En el ejemplo, veo una función XCBWaitForEvent. Por lo que entiendo, esta función en realidad espera eventos en la red, y esto es diferente de la función Xlib correspondiente (que parece una cola local). Si esto es correcto, puede ser una buena idea mencionarlo, ya que parece una gran diferencia. - Liberatore(T) 11:51, 4 de mayo de 2006 (UTC)
Es una cuestión de opinión, pero aquí hay una versión más corta que aprovecha las características de C99. Creo que explica la tarea en cuestión con mucha más claridad que el código existente. Si no hay comentarios, cambiaré el artículo para incluir este código.
#incluir <xcb/xcb.h>#incluir <stdio.h>#incluir <stdlib.h>#incluir <errno.h>int principal (int argc, char **argv){/*abrir conexión con el servidor*/xcb_conexión_t *c = xcb_conexión(NULL,NULL);si (xcb_connection_tiene_error(c)){errno = ENOTCONN;perror(*argv);devolver FALLO_DE_SALIDA;}/* obtener la primera pantalla */xcb_screen_t *s = xcb_setup_roots_iterator( xcb_get_setup(c) ).data;xcb_gcontext_t g = xcb_generate_id(c);uint32_t valores[2]= {s->pixel_negro, 0};xcb_create_gc(c, g, s->root, XCB_GC_FOREGROUND | XCB_GC_GRAPHICS_EXPOSURES , valores);/*crear ventana*/xcb_ventana_t w = xcb_generate_id(c);valores[0] = s->pixel_blanco;valores[1] = EXPOSICIÓN_MÁSCARA_EVENTO_XCB | PULSAR_TECLA_MÁSCARA_EVENTO_XCB;xcb_crear_ventana(do,s->profundidad_raíz,yo,s->raíz,10, 10, 100, 100, 1,XCB_CLASE_VENTANA_ENTRADA_SALIDA,s->raíz_visual,PÍXEL TRASERO XCB_CW | MÁSCARA DE EVENTO XCB_CW,valores);/* mapea (muestra) la ventana */ventana_mapa_xcb(c, w);xcb_flush(c);/* bucle de eventos */xcb_evento_genérico_t *e;para(xcb_rectángulo_t r = {20,20,60,60};( e = xcb_espera_evento(c) ) &&XCB_KEY_PRESS != ( e->tipo_de_respuesta & ~0x80 );libre(e)) si (XCB_EXPOSE == (e->tipo_de_respuesta & ~0x80)){/* dibujar o redibujar la ventana */xcb_poly_fill_rectangle(c, w, g, 1, &r);xcb_flush(c);}free(e); // captura la operación free() omitida que ocurre cuando el bucle for sale/*cerrar conexión al servidor*/xcb_desconectar(c);devolver SALIDA_ÉXITO;}
—Comentario anterior sin firmar añadido por 216.115.29.1 ( discusión • contribs ) 20:10, 5 abril 2007
for()
, no significa que estas construcciones deban usarse en cada oportunidad, y ciertamente no hace que el código sea más claro que el colaborador anónimo haya elegido hacerlo. Esta es una función larga y el editor anónimo la ha hecho mucho más difícil de leer.while
de eventos estándar, intuitivo y conciso , un modismo muy común e intuitivo, y lo ha destrozado hasta convertirlo en este extraño bucle ilegible seguido de una serie de declaraciones terriblemente redundantes y mal sangradas . La línea de código que sigue al bucle también puede provocar la liberación de un puntero nulo (que debería devolver alguna vez ), lo que probablemente provocará un bloqueo de muchas (¿la mayoría?) bibliotecas.switch
for
if
xcb_wait_for_event
NULL
Acabo de leer este artículo y estudié el código de ejemplo con atención. Todo está bien escrito y el ejemplo es muy legible, excepto la línea: switch (e->response_type & ~0x80). ¿No debería haber un #define para el ~0x80 cuyo nombre transmite algún significado concreto a los bits correspondientes de response_type? ¿O se trata de un truco avanzado que no sirve como buen ejemplo didáctico? Gracias. Jlenthe ( discusión ) 18:30, 10 de febrero de 2008 (UTC)
¿Alguien sabe dónde encontrar documentación real sobre la API de XCB? He buscado en el sitio web de XCB, en la Wiki y en Google. XcbApi parece tener solo unas pocas páginas que documentan algunas estructuras y definiciones irrelevantes. —Comentario anterior sin firmar añadido por Vedge ( discusión • contribs ) 03:11, 7 de febrero de 2010 (UTC)
Todas las fuentes que se encuentran actualmente sobre este tema citan a los desarrolladores de esta biblioteca (los anuncios de lanzamiento de los desarrolladores tampoco cuentan). No se citan fuentes de terceros, ni hay reseñas bien informadas, etc. TEDickey ( discusión ) 10:21 30 oct 2015 (UTC)
En "Enlaces a otros idiomas", seguramente solo se debería mencionar xcffib como el enlace a Python. xpyb está obsoleto, ya no se mantiene, solo funciona con Python 2 y ya no se encuentra en los repositorios de la mayoría de las distribuciones. Propongo eliminarlo por completo. ¿Alguna objeción? Longitude2 ( discusión ) 21:41, 17 de enero de 2021 (UTC)
El tema afirma que "los creadores de XCB han inventado un lenguaje de descripción de interfaz especializado", lo que, dado el ejemplo trivial, es una gran exageración de algún editor al afirmar que un esquema basado en XML es un "lenguaje de descripción de interfaz especializado". TEDickey ( discusión ) 19:07, 22 de marzo de 2024 (UTC)