1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
Tips and pointers (*berylhackingtips):
*Una diminuta porción de Beryl es la magia actual del OpenGL, la
mayoría del trabajo; es él manipulamiento de los "datos principales
estructurados", (CompScreen, CompWindow)... el trabajo con Callbacks, (hmm...él
núcleo es una bestia diferente). El estructuramiento de datos
apropiadamente, es mucho más relevante que algoritmos
impresionantes.
*IPCS puede ser usado para la intercomunicación entre los plugins,
veáse: beryl-core/src/ipcs.c, y Cube/Rotate son dos buenos ejemplos.
Evite el uso de esto, ya que es lento y ata los plugins de maneras no
deseadas, y no esperadas.
*La raíz de toda maldad es la optimización prematura, use profile
preferentemente, esto le ahorrará tiempo de pérdida en optimización.
Para hacer profile de beryl lo puede compilar con -pg (CFLAGS="-pg"
./configure; make; blah blah), cuando beryl se cerrará; arrojará en él
directorio de trabajo 'gmon.out' . Desde ese directorio ejecute gprof
/destino/de/beryl/ejecutable > berylprof, luego puede ver el profile en
un editor de texto, o en una herramienta de profile como kprof
(altamente recomendado).
* WRAP/UNWRAP trabaja un poco mejor como stack de sorts, examine un
backtrace del gdb para hacer las cosas claras. Esto es relativamente
inflexible y las ideas para mejoras posteriores a 0.2.0 son bienvenidas.
* Beryl puede ser debugeado sin colgar el sistema, compile con simbolos
debugging (-g) y ejecutelo en tty con gdb beryl, configure breakpoints
con 'break function' ejecute con 'run'; cuando X se cuelgue debido al
break use alt+sysrq+r luego ctrl+alt+f1 para obtener al tty, examine
cosas, y continue con la ejecucion.
* Enlazar iteraciones o sentencias (o lo que sea) desde; un-unos plugins,
seteos de núcleo, seteos de plugins
individuales, o seteos de intervalo, etc..> hacia otros', es malo y debe
ser evitado.
'Escriba (programas) para hacer una cosa y para hacerla bien'.
* Como regla evite los pixel shaders ya que no estan expuestos en la versión
actual AIGLX . A' la water.
* Los plugins deberán trabajar dentro del núcleo, al mismo tiempo... los
cambios al núcleo pueden hacerse para acomodar ventajas específicas; como
por ejemplo el cubo transparente.
A HACER:
*Las optimizaciones son siempre bienvenidas, el benchmark no es
horrorosamente preciso, pero sin embargo, si usted nota constantemente
una mejora de ~10-20 FPS , o un decremento en picos de lag , o algo que
no es más de '1 FPS al rotar el cubo a la izquierda publiquelo,
en el peor de los casos será revertido.
* Enlace de tecla para reemplazar ventanas (que corra a través del
algóritmo placement ), sería fácil de implementar y una característica
muy útil. Puntos extra en el caso de que la ventana vuele hacia la nueva
posición.
* ¡Comentar el código! no solamente ayuda a todos en sus tareas, te ayuda
a ti a entender los lineamientos de código.
* Permitir al plugin anotar (anotate), dibujar directamente sobre la
textura de la ventana. Esto debería involucrar procing drawWindowTexture
en beryl-plugins/src/neg.c , y bindings en contexto de renderización
opengl hacia la ventana GLXPixmap, más allá de esto, es muy similar al
resto de annotate.
* Mejorar las descripciones cortas (short descriptions), probablemente
involucre (long descriptions), será mas valorado debido a que son
movidos a tooltips.
* Sabes de alguna manera de agilizar IPCS??
* Refractar algunos de los códigos en su lugar, (es un código spaghetti
de momento).
* Contribuir al I18N
* Trabajar en kberylsettings, sobre PyQT settings manager en los
branches.
* Un arreglo de tiempo de retraso a Opacify, para que no
dispare el efecto de inmediato. Ver el ejemplo
beryl-plugins/src/plane.c, parte funcional CompTimeoutHandle...es bastante
simple, void * closure es pasado al callback. Hacer esto configurable.
* Agregar CompOptionFont a los settings
* Busca funciones a las que se les pueda agregar entrelíneas...
usar __attribute__((always_inline)) para forzar interlineado,
inclusive sin la función: -finline-functions
* Exonerar! ventanas especifícas como parte del menú esmerald de
decoraciones de ventana . ¿Te acuerdas de esta configuración de
ventanas? fijate en todo kwin.
* Fijate al usar, macros DESEADAS/NODESEADAS para los argumentos if/else
en bucles anidados, con una alta discriminación hacia uno o lo otro. Usa
Profile para encontrar dichas áreas, ¡optimizar prematuramente es malo!
* Participar, discurriendo y planeando en IRC, es invaluable. Hagesé
parte de la comunidad de desarrolladores de beryl, no sea un perro
vagabundo!
* ¡Y mas cosas/cosillas/demases aquí!
* Discutir largamente en las listas de correo.
* Agregar más documentación de código en Documentation/ sobre las interfaces
usadas por Beryl.
nota de traducc.: si usted no ve las tildes donde corresponde agrege la sig.
línea al archivo de configuración consolefont:
CONSOLETRANSLATION="8859-1_to_uni"
|