The Allegro Wiki is migrating to github at https://github.com/liballeg/allegro_wiki/wiki

Contributing to allegro

From Allegro Wiki
Jump to: navigation, search

Contributing to Allegro

Wanna know how you can contribute to your favorite graphics library, Allegro?

Well you can start right here with the source code TODO list, or you can take a crack at helping us along the Allegro roadmap. Pick something out that interests you and see if you can improve it. ;)

The [Allegro Hacker's Guide] is outdated and from Allegro 4, but you can take a look for inspiration as to how A4 was crafted.

The basic submission process

There are a few things you need to know and do in order to get your contributions to allegro accepted.

1. Install [git] or if you're on Windows, you can use a handy explorer extension with [TortoiseGit], and follow the directions at [http://alleg.sourceforge.net/git.html] to get your git repo up and running.

2. Make your local changes and then create a patch, using git format-patch { <since> | <revision range> } (see previous link), or if you're using TortoiseGit, right click on the allegro folder and navigate to the tortoise-git menu entry and then select diff in the popup menu. Git generates unified diffs, but Git extends the format to carry along executable bits in *nix.

3. Subscribe and submit your patch to the [[AD] - Allegro Developer's Mailing List]

4. Wait for feedback and be patient.

source code TODO list

updated 2014-12-12

cd allegro
grep -r -i -n todo .\*.*

.\addons/acodec/flac.c:287:   /* TODO: test this array flattening process on 5.1 and higher flac files */
.\addons/audio/alsa.c:299:         al_rest(0.005); /* TODO: Why not use an event or condition variable? */
.\addons/audio/alsa.c:570:   // TODO: Setting this to 256 causes (extreme, about than 10 seconds)
.\addons/audio/dsound.cpp:132:/* TODO: review */
.\addons/audio/openal.c:27:/* TODO: make these configurable */
.\addons/audio/openal.c:145:/* TODO: review */
.\addons/audio/openal.c:161:/* TODO: review */
.\addons/audio/opensl.c:11:/* TODO:
.\addons/audio/opensl.c:189:    /* TODO: review the channelMasks */
.\addons/audio/opensl.c:677:    /* TODO */
.\addons/audio/opensl.c:685:    /* TODO */
.\addons/audio/pulseaudio.c:97:    * TODO: Maybe we should have a force flag to the audio driver
.\addons/image/iphone.m:107:      // TODO: Read from stream until we have the whole image
.\addons/image/macosx.m:47:   // TODO: We should check it really is a bitmap representation.
.\addons/image/macosx.m:130:      // TODO: Read from stream until we have the whole image
.\addons/image/png.c:211:   // TODO: can this be different from rowbytes?
.\addons/primitives/high_primitives.c:999:   TODO: Doing this as a triangle fan just doesn't sound all that great, perhaps shuffle the vertices somehow to at least make it a strip
.\addons/primitives/line_soft.c:591:   TODO: Need to clip them first, make a copy of the vertices first then
.\addons/primitives/line_soft.c:615:   TODO: This bit is temporary, the min max's will be guaranteed to be within the bitmap
.\addons/primitives/primitives.c:217:    * TODO: Somehow free the d3d_decl
.\addons/primitives/triangulator.c:559:            // TODO: optimize this by removing if
.\addons/video/ffmpeg.c:1:/* TODO: Thsi is just a quick ffmpeg video player test. Eventually this
.\addons/video/ffmpeg.c:26: * TODO: al_get_audio_stream_fragments actually might be useful for
.\addons/video/ogv.c:3: * TODO:
.\android/allegro_activity/src/Key.java:119:   static final int ALLEGRO_KEY_SEMICOLON2  = 105;   /* MacOS X -- TODO: ask lillo what this should be */
.\cmake/AllegroFindFFMPEG.cmake:13:# TODO: Windos and OSX
.\cmake/Toolchain-android.cmake:53:#there may be a way to make cmake deduce these TODO deduce the rest of the tools
.\cmake/Toolchain-android.cmake:102:#for some reason this is needed? TODO figure out why...
.\CMakeLists.txt:3:# TODO:
.\CMakeLists.txt.new:3:# TODO:
.\CMakeLists.txt.new.bak:3:# TODO:
.\demos/speed/speed.txt:137:Still todo: more interesting enemy movememnt, you dying.
.\docs/scripts/make_protos.c:36:      /* TODO: Should the above regexp match it? If so it doesn't here... */
.\docs/src/refman/latex.template:30:% TODO: I don't like the sans serif fonts much.
.\docs/src/refman/shader.txt:98:TODO: Is ALLEGRO_PROGRAMMABLE_PIPELINE set automatically in this case?
.\examples/ex_utf8.c:7:/* TODO: we should also be checking on inputs with surrogate characters
.\include/allegro5/keyboard.h:57:/* TODO: use the config system */
.\include/allegro5/keycodes.h:138:   ALLEGRO_KEY_SEMICOLON2	= 105,	/* MacOS X -- TODO: ask lillo what this should be */
.\include/allegro5/platform/aintunix.h:53:/* TODO: integrate this above */
.\include/allegro5/platform/albcc32.h:44:   /* TODO: check if BCC has inttypes.h and/or stdint.h */
.\misc/gcc-uni.sh:108:# TODO: use trap to cleanup
.\README_android.txt:253:TODO
.\src/android/android_mouse.c:37:   the_mouse.state.pressure = the_mouse.state.buttons ? 1.0 : 0.0; // TODO
.\src/android/android_mouse.c:47:      event.mouse.dx = 0; // TODO
.\src/android/android_mouse.c:48:      event.mouse.dy = 0; // TODO
.\src/android/android_mouse.c:49:      event.mouse.dz = 0; // TODO
.\src/android/android_mouse.c:50:      event.mouse.dw = 0; // TODO
.\src/android/android_system.c:591:   /* TODO: add the non native activity driver */
.\src/android/android_touch.c:101:      mouse_state.pressure = mouse_state.buttons ? 1.0 : 0.0; /* TODO */
.\src/display.c:115:      /* TODO:
.\src/iphone/EAGLView.m:326:   // TODO: handle double-clicks (send two events?)
.\src/iphone/iphone_display.m:58:      // TODO
.\src/iphone/iphone_joystick.m:37:    // TODO: What's a good frequency to use here?
.\src/iphone/iphone_mouse.m:37:   the_mouse.state.pressure = the_mouse.state.buttons ? 1.0 : 0.0; // TODO
.\src/iphone/iphone_mouse.m:47:      event.mouse.dx = 0; // TODO
.\src/iphone/iphone_mouse.m:48:      event.mouse.dy = 0; // TODO
.\src/iphone/iphone_mouse.m:49:      event.mouse.dz = 0; // TODO
.\src/iphone/iphone_mouse.m:50:      event.mouse.dw = 0; // TODO
.\src/keybdnu.c:37:/* TODO: use the config system for these */
.\src/linux/lkeybdnu.c:27: *      TODO: diacriticals
.\src/linux/lmseev.c:452: *  TODO: missing handle_axis_event calls
.\src/linux/lmseev.c:829:   event.mouse.pressure = 0.0; /* TODO */
.\src/macosx/hidjoy-10.4.m:182: * TODO this only works for simple joysticks and
.\src/opengl/extensions.c:819:    /* TODO: use these somewhere */
.\src/opengl/extensions.c:846:      /* TODO: use these somewhere */
.\src/opengl/ogl_bitmap.c:435:// TODO: To support anisotropy, we would need an API for it. Something
.\src/opengl/ogl_render_state.c:24:   /* TODO: We could store the previous state and/or mark updated states to
.\src/sdl/sdl_mouse.c:86:   event.mouse_pressure = mouse->buttons ? 1.0 : 0.0; /* TODO */
.\src/sdl/sdl_mouse.c:144:   ret_state->pressure = mouse->state.buttons ? 1.0 : 0.0; /* TODO */
.\src/system.c:217:    * TODO: Maybe we want to do the check after the "bootstrap" system
.\src/tri_soft.c:799:   TODO: Need to clip them first, make a copy of the vertices first then
.\src/tri_soft.c:814:   TODO: This bit is temporary, the min max's will be guaranteed to be within the bitmap
.\src/win/d3d_display_formats.cpp:136:                  // TODO: Is it ok to use the quality level here?
.\src/win/d3d_render_state.cpp:24:   /* TODO: We could store the previous state and/or mark updated states to
.\src/win/wgl_disp.c:684:      /* TODO: we could use the context sharing feature */
.\src/win/wmouse.c:395:   mouse_state.pressure = mouse_state.buttons ? 1.0 : 0.0; /* TODO */
.\src/x/xdisplay.c:992:    * TODO: Find out details?
.\src/x/xglx_config.c:539:         /* TODO: Right now Allegro's own OpenGL driver only works with a 3.0+
.\src/x/xkeyboard.c:735:/* TODO: is this needed?
.\src/x/xmousenu.c:232:   /* TODO: is there a way to detect whether z/w axis actually exist? */
.\src/x/xmousenu.c:356:      the_mouse.state.pressure = the_mouse.state.buttons ? 1.0 : 0.0; /* TODO */
.\src/x/xmousenu.c:419:      the_mouse.state.pressure = the_mouse.state.buttons ? 1.0 : 0.0; /* TODO */
.\src/x/xtouch.c:109:      mouse_state.pressure = mouse_state.buttons ? 1.0 : 0.0; /* TODO */