534 Commits (6bd44c4fcd45aa64a757f8797db78252d2fee3b4)

Author SHA1 Message Date
Simon Ser 7c05933e51 backend/drm: prevent outputs from being destroyed on commit
5 years ago
Simon Ser 21e1953b61 backend/drm: don't modeset with a NULL mode after TTY switch
5 years ago
Simon Ser 8fc16890c7 output: refuse to commit a buffer or modeset a disabled output
5 years ago
Simon Ser f0781cd792 backend/drm: modeset before enabling an output
5 years ago
Simon Ser 5d1ba0f446 output: re-introduce atomic mode, enabled, scale and transform
5 years ago
Simon Ser 4da4a15d6b output: add description
5 years ago
Rouven Czerwinski be4b9f7f5b backend/drm: print preferred mode
5 years ago
Jason e8855ee462 Amend typos
5 years ago
Simon Ser 6c649bab53 output: add wlr_output_event_present.commit_seq
5 years ago
Simon Ser 0e57effd38 backend/drm: add support for custom modes
5 years ago
Simon Ser e97c2c3639 backend/drm: retry without modifiers for the primary plane
5 years ago
Simon Ser fd25e2ca11 backend/drm: track gbm_bo during direct scan-out
5 years ago
Simon Ser 2bdd1d0896 backend/drm: use modifiers for our GBM buffers
5 years ago
Rouven Czerwinski bf90474b74 backend/drm: check for mst: in path property
5 years ago
Simon Ser 8d2ea9544b backend/drm: fix missing plane formats
5 years ago
Antonin Décimo 39c5d93dea backend/drm: use UINT64_C for uint64_t literals
5 years ago
Rouven Czerwinski 01f903874b Revert "output: atomic mode"
5 years ago
Rouven Czerwinski 4d36cc86eb backend/drm: destroy output immediately
5 years ago
Simon Ser ee5f98ad49 output: atomic mode, enabled, scale and transform
5 years ago
Simon Ser ca45f4490c Remove all wayland-server.h includes
5 years ago
Rouven Czerwinski d10072e76c backend: drm: switch to pageflip_handler_2
5 years ago
Scott Anderson 46dc4100d6 backend/drm: Exit-early if 0 crtcs
5 years ago
Scott Anderson b3f42548d0 backend/drm: Simplify object matching code
6 years ago
Simon Ser ce3f4c3fe1 output: remove wlr_output_impl.transform
6 years ago
Simon Ser e8057bb60c backend/drm: fallback to drmModeAddFB2
6 years ago
Simon Ser d1766547bd backend/drm: reject DMA-BUFs with flags
6 years ago
Simon Ser 44ba603c0e backend/drm: hold buffers while scanning out
6 years ago
Simon Ser afe7b207d5 output: fix attach_buffer semantics
6 years ago
Simon Ser 1d222309b8 output: change set_dmabuf to attach_buffer
6 years ago
Simon Ser 5c78f1b0d5 backend/drm: strip alpha channel on scan-out
6 years ago
Simon Ser e516ea4c79 backend/drm: check format when scanning out DMA-BUF
6 years ago
emersion 96d6fde5dc backend/drm: add basic support for direct scan-out
6 years ago
Simon Ser 20690346c7 output: rename needs_commit to needs_frame
6 years ago
Simon Ser 9a0f8a194c output: refactor backend API
6 years ago
Alyssa Ross 95b22619e0 Fix missing headers when building without X11
6 years ago
Guido Günther cd60f40bbb wlr_output: Add preferred property (#1625)
6 years ago
Scott Anderson 6a8f17b5f6 backend/drm: Don't fail on failing to find overlay format
6 years ago
Scott Anderson d945c97926 backend/drm: Unset cursor on cleanup
6 years ago
Rouven Czerwinski e1834ace28 backend/drm: fix memory leak in realloc crtcs
6 years ago
Brian Ashworth 50011e7170 backend/drm: fix modeset on drm fd resume
6 years ago
emersion 2a738803b2
backend/drm: fix NULL dereference when unsetting cursor
6 years ago
Drew DeVault 2d2c79e37c
Merge pull request #1537 from VincentVanlaer/cursor-dmabuf-nouveau
6 years ago
Vincent Vanlaer 26a9fa8148 Add workaround for hardware cursors on nouveau
6 years ago
Drew DeVault 9a5d59a839 Revert "drm: do not modeset to current mode"
6 years ago
Vincent Vanlaer bc048b22fb Copy cursor surface to secondary gpu if necessary
6 years ago
Brian Ashworth 72c76b128e drm: do not modeset to current mode
6 years ago
Vincent Vanlaer 7bc43413ed Allow cursor render surface to be used as fb
6 years ago
emersion ee293fab58
backend/drm: fix GBM format mismatch
6 years ago
emersion d4ffa5b7a6
backend/drm: fix state for outputs loosing their CRTC
6 years ago
Timidger 9af0c5338f
Standardize the wlr_box input paramaters
6 years ago
emersion ff6c4f80b2
backend/drm: don't insert duplicate custom modes, fix refresh rate
6 years ago
Scott Anderson fec88770dd backend/drm: Fix uninitialized variable
6 years ago
Scott Anderson efdd4d6ea2 backend/drm: Improve encoder logic
6 years ago
emersion f8056a0350
backend/drm: fix disappeared output indices
6 years ago
emersion 491f1dbf75
backend/drm: fix VLA overflow
6 years ago
Rostislav Pehlivanov 91513c89cd Fix interlaced mode rejection
6 years ago
Rostislav Pehlivanov dc9fdd6385 Skip interlaced modes during drm mode detection
6 years ago
emersion 68362b37a8
backend/drm: fix frame scheduling on secondary GPUs
6 years ago
sghctoma fa587b8ea9 Increase _POSIX_C_SOURCE to 200112L
6 years ago
emersion b66041a9e5 backend/drm: don't reset conn->pageflip_pending in drm_connector_cleanup
6 years ago
Drew DeVault 8488ed2997
Merge pull request #1298 from emersion/output-dangling-idle-frame
6 years ago
Rouven Czerwinski 77478ac302 backend/drm: set drmEventContext version to 2
6 years ago
emersion 46b1ba386f output: remove idle_frame event source when destroying output
6 years ago
Scott Anderson 885586a831
Merge pull request #1280 from emersion/drm-link-status
6 years ago
emersion 37de179013 backend/drm: fix zero-length VLAs
6 years ago
emersion 776008da69 backend/drm: properly handle GPUs without CRTCs
6 years ago
emersion ba91422747 output: don't trigger a frame immediately in schedule_frame
6 years ago
emersion eac7c2ad2f output: add presentation refresh prediction
6 years ago
emersion 54e1287f30 backend: add get_present_clock
6 years ago
emersion 78389fe722 output: add present event
6 years ago
emersion f5a147b739 backend/drm: add support for the link-status property
6 years ago
emersion e88db9a3fb backend/drm: reset gamma table on VT switch
6 years ago
emersion 2beb68007e output: make gamma size a size_t and gamma table const
6 years ago
emersion 79dd9ba151 backend/drm: don't free connector immediately
6 years ago
emersion 139a905924 backend/drm: add assertions
6 years ago
emersion f8a50e4fe7 backend/drm: steal CRTCs from disabled outputs
6 years ago
emersion cb293f09e7 output: make wlr_output_enable return a bool
6 years ago
emersion 1fcecd68df backend/drm: de-allocate unused CRTCs
6 years ago
emersion 8a6bdc193d backend/drm: damage outputs when switching CRTCs
6 years ago
emersion 017cfb0b86 backend/drm: log when de-allocating CRTC
6 years ago
emersion b877daded1 backend/drm: better hotplug handling
6 years ago
emersion 95d05acda5 backend/drm: fix invalid VLA size in scan_drm_connectors
6 years ago
emersion ef88df2142 backend/drm: emit new_output after scanning connectors
6 years ago
emersion e84f01168d backend/drm: allow disabling outputs in NEEDS_MODESET state
6 years ago
Scott Anderson 2d8f53affd Check for DRM prime
6 years ago
Scott Anderson 4bee710c30 Fix hardware cursor on secondary GPU
6 years ago
emersion 364afced3e backend/drm: remove unnecessary casts
6 years ago
emersion 2ebecb6727 backend/drm: allow to pass empty gamma ramp to reset it
6 years ago
emersion a149c2370a Implement wlr-gamma-control-unstable-v1
6 years ago
emersion 7cbef15206
util: add wlr_ prefix to log symbols
6 years ago
Drew DeVault be54278207
Merge pull request #1095 from agx/output-add-mode
6 years ago
Guido Günther 8d72090afe drm: Allow to add additional modes
6 years ago
emersion 2b9cbaddf3
screencopy: add support for frame flags
6 years ago
Dominique Martinet f0d455f088 drm backend: overflow fixes
6 years ago
emersion 21928cbe61
Merge branch 'master' into screencontent
7 years ago
emersion bd430b8620
backend/drm: support multi-planar DMA-BUFs when exporting
7 years ago
emersion 9e26808c28
output, backend/drm: add wlr_output_export_dmabuf
7 years ago
emersion 79683ee497
backend/drm: better connector cleanup, add more logs
7 years ago
Markus Ongyerth 6a46fcc6f2 recalculate cursor projection matrix on set_cursor
7 years ago
emersion 13098a18ea
Fix hardware cursors scale & transform
7 years ago
emersion caf9f9022c
Merge pull request #936 from emersion/full-hardware-cursors
7 years ago
Guido Günther 1637053ef8 drm: only disable atomic modesetting when WLR_DRM_NO_ATOMIC == 1
7 years ago
emersion 225d182765
output: always use hardware cursors if available
7 years ago
emersion 71ca45e2c0
Make sure we don't use others' prefixes
7 years ago
emersion b0d99f5c67
Remove wlr_ prefix from local symbols
7 years ago
emersion 94fa6c88f4
output: don't emit the mode event if it hasn't changed
7 years ago
emersion a2391a6047
Fix cursor transform on DRM backend
7 years ago
emersion c63d94483b
Redesign wlr_texture
7 years ago
emersion 60bfe0a6aa
backend/drm: remove remaining raw GL call
7 years ago
emersion 3581573bdc
render/gles2: make wlr_renderer_begin take viewport size
7 years ago
emersion c41de2d1be
render: split render.h into wlr_renderer.h and wlr_texture.h
7 years ago
emersion 7894fca224
matrix: rename wlr_matrix_texture to wlr_matrix_projection
7 years ago
emersion 876f07e9f1
renderer: replace wlr_texture_get_matrix by wlr_render_texture
7 years ago
emersion 824a95ad19
matrix: use 2D matrices
7 years ago
emersion d26b67cb06
matrix: unify API, don't use array pointers
7 years ago
emersion b6a3f240c7
matrix: move to types/
7 years ago
emersion d24f868bbe
backend/drm: fix cursor hotspot not updated
7 years ago
emersion 92ca4ad474
backend/drm: refactor wlr_drm_connector_set_cursor
7 years ago
Markus Ongyerth 2cea430488 prevent current_mode null on output_enable(false)
7 years ago
Markus Ongyerth a65ef8ea86 restore dpms state on drm resume
7 years ago
Guido Günther d08792bfff Add alpha to wlr_render_with_matrix
7 years ago
Drew DeVault 1d9be89e2d
Revert "ELF Visibility"
7 years ago
Scott Anderson 86269052eb Explicitly export EFL symbols
7 years ago
emersion c2e1474010
Reformat all #include directives
7 years ago
emersion 36ead80cd1
Make wlr_signal_emit_safe private
7 years ago
emersion 10ecf871f2
Remove wlr_backend.events.{output_remove,device_remove}
7 years ago
emersion 5e58d46cc1
Add wlr_signal_emit_safe
7 years ago
Drew DeVault 664d7bfe4e
Merge pull request #618 from VincentVanlaer/atomic-gamma
7 years ago
emersion bf6d245400
Swap buffers with damage
7 years ago
Vincent Vanlaer 2df97ed16a Set needs_swap on output when gamma changes
7 years ago
Vincent Vanlaer f5e5d1983b Do not allow gamma control without a crtc
7 years ago
Vincent Vanlaer ab011406ad Add atomic gamma lut size fetching
7 years ago
Vincent Vanlaer cc1229e75e Add atomic gamma setting
7 years ago
emersion cdd55b5d19
Merge remote-tracking branch 'upstream/master' into output-damage
7 years ago
Markus Ongyerth 08fda567d2 prevents reuse of outdated wlr_output state
7 years ago
emersion 3d3ea32137
Merge remote-tracking branch 'upstream/master' into output-damage
7 years ago
emersion bb39277e97
backend/drm: update output enabled property on modeset
7 years ago
emersion bb4aeb3b2f
backend/drm: support updating cursor when session is paused
7 years ago
Guido Günther c5aac77692 Fix some typos
7 years ago
emersion d498855b9d
backend/drm: fix hw cursor position on rotated and scaled outputs
7 years ago
emersion b47e8c4a1d
backend/drm: do not retry pageflip when swapping buffers
7 years ago
emersion 20e6861021
Do not flush damage if swapping buffers failed
7 years ago
emersion 1ee61dbd0f
Merge remote-tracking branch 'upstream/master' into output-damage
7 years ago
Guido Günther d7dfbd23fa drm: Use ptrdiff_t instead of intmax_t in format string
7 years ago
emersion 7adf13e284
Fix flickering when switching VT
7 years ago
emersion 8d58ed502b
output: add wlr_output_schedule_frame
7 years ago
emersion ece2c1e4e2
Damage tracking for transformed outputs
7 years ago
emersion 59c53e8333
Merge remote-tracking branch 'upstream/master' into output-damage
7 years ago
Timidger f8b9f44ff5
Add con/crtc null check to move_cursor in drm
7 years ago
Timidger 9d4ea146b6
Added crtc null check for other drm funcs
7 years ago
Timidger 4478cf1ddc
Fixes #575
7 years ago
emersion 0365b587f0
output: add damage tracking via buffer age
7 years ago
emersion 4ca38b84ed
backend/drm: fix hardware cursors not moving
7 years ago
emersion 584f06ad2f
backend/drm: do not try a pageflip is another one is in pending
7 years ago
emersion f0f97280a0
backend/drm: fix retry pageflip
7 years ago
emersion 53ba9b4eec
Fix output enable in DRM backend
7 years ago
emersion 771263380c
Add wlr_output::enabled
7 years ago
emersion e737f65e38
Fix cursor on transformed output with DRM backend
7 years ago
Dominique Martinet be95147385 drm backend: add wlr_output_is_drm
7 years ago
emersion 0256de0002
Add full refresh rate support to custom modes
7 years ago
emersion 466e86b7b2
Merge branch 'master' into surface-transform
7 years ago
emersion 3b4b8953d9
Update output layout when scale or transform changes
7 years ago
emersion 8af779fae6
Fix segfault when moving hardware cursor
7 years ago
emersion 6a69b4419f
Make wlr_output_transform_* functions public, refactoring
7 years ago
Dominique Martinet f451ea3639 rootston exit: fix drm destroy
7 years ago
emersion a15b35aa10
Remove mysterious hotspot switch in DRM backend
7 years ago
emersion 60c018c017
Fix hidden software cursors, fix cursor transformations on DRM backend
7 years ago
emersion 0beae99188
Apply output transformation to pointer events in Wayland backend
7 years ago
emersion c3b09f73da
Fix cursor hotspot with rotated outputs on DRM backend
7 years ago
emersion 6656e25fd4
Transform cursor hotspot
7 years ago
emersion 1b6c729360
Add wlr_output_cursor
7 years ago
Drew DeVault fa9c6ecc53 Fix segfault in DRM cursor
7 years ago
emersion 9d587d759f
Do not set hw cursor if disabled when switching VT
7 years ago
Scott Anderson 75f0a6c998 Merge pull request #286 from versusvoid/update-connector-crtc-bindings
7 years ago
Versus Void 549777ca19 Set crtc field when scanning for DRM connectors
7 years ago
Versus Void 3c31209a97 Reinitialize only changed DRM outputs after setting mode on one
7 years ago
Versus Void ecb2a2b0d3 Emit output resolution event only when resolution changes
7 years ago
emersion 1cc8f21d8e
Cleanup wlr_gamma_control
7 years ago
emersion e1d213fccd
Create globals only for enabled outputs in DRM backend
7 years ago
Versus Void 2ab080e79a Fix index computation in DRM output scan and CRTC match
7 years ago
Drew DeVault 16f35ecbea Merge branch 'master' into heghe/wl_list
7 years ago
Scott Anderson bdeffad7e5 Remove drm field from wlr_drm_connector
7 years ago
Scott Anderson 822a9f65a4 Add pointer to backend inside wlr_output
7 years ago
Scott Anderson 4ea84c5765 Remove unnecesary wlr_renderers
7 years ago
Heghedus Razvan 1d716241af Replace list_t with wl_list in wlr_output
7 years ago
Heghedus Razvan c03e774636 Replace list_t with wl_list in wlr_drm_backend
7 years ago
emersion 92daa790bb
Allow to update the cursor hotspot without its pixels
7 years ago
Versus Void 641d08ce7e Transform hotspot with cursor
7 years ago
Versus Void c5df6ca900 Fix memory leaks
7 years ago
Scott Anderson f193623ca1 Change iface prefix to suffix
7 years ago
Scott Anderson f6f9c40965 Minor fixes
7 years ago
Scott Anderson 009c3747a8 Multi-GPU DRM
7 years ago
Scott Anderson eaef028976 Add renderer pointer inside drm_surface
7 years ago
Scott Anderson 4101b89700 Rename wlr_drm_output to wlr_drm_connector
7 years ago
Scott Anderson 22e77d9195 Rename backend to drm
7 years ago
Scott Anderson ec5b95e08f Add pointer to backend from DRM outputs
7 years ago
Scott Anderson 096249a2a1 Split DRM rendering to its own file
7 years ago
Scott Anderson d0708b1a3a Split DRM internal interface to its own header
7 years ago
Scott Anderson 610b0493ac Rename files to remove pointless drm prefix
7 years ago
Scott Anderson 517ba0bc16 Change egl_get_config to always use visual id
7 years ago
Scott Anderson a466c86fba Set state properly
7 years ago
Scott Anderson db5e9385d4 Simplify retry_pageflip
7 years ago
Scott Anderson 025b3ee515 Add error recovery for failed page flips
7 years ago
Scott Anderson 459d138fa2 Add timeout to DRM cleanup
7 years ago
Scott Anderson 4a53aab466 Allow forcing legacy DRM interface
7 years ago
Scott Anderson 0aa00da1f3 Check for disappearing DRM connectors
7 years ago
emersion 6f98b5a337
Add set_gamma and get_gamma_size to wlr_output_impl
7 years ago
Tony Crisci e3d47376dc add wlr_cursor basic implementation
7 years ago
Dominique Martinet f24b3df980 wlr renderer/texture: rename init to create when it does alloc
7 years ago
Dominique Martinet 0252c8e072 drm realloc_crtcs: check we found an output
7 years ago
Tony Crisci 784cf65635 fix uninitialized warning
7 years ago
Drew DeVault e7fa4f12e1 Fix DRM problem introduced in 901c14c
7 years ago
Calvin Lee 901c14c409 Prevent alloc errors from crashing in `list_t`
7 years ago
Drew DeVault c8c6619146 Refactor out wlr_output_mode_state
7 years ago
Drew DeVault 41e735242d Remove wlr_output_state, update backends
7 years ago
Drew DeVault 234b2104e4 Refactor wlr_backend_state out of DRM backend
7 years ago
Dominique Martinet de86965174 Use libinput_event_destroy/xkb_*_unref
7 years ago
Drew DeVault 6569c2b626 Merge pull request #53 from nyorain/drm_buffer
7 years ago
Drew DeVault c24351681f Refactor EGL handling
7 years ago
Scott Anderson fe2fbd0fad Fix possible use of CRTC after monitor is unplugged
7 years ago
nyorain 67369173aa Implement drm (egl) buffer attaching
7 years ago
Scott Anderson af67966d92 Atomic modesetting
7 years ago
nyorain e167f41fde Rename wlr_surface -> wlr_texture; attach -> upload
7 years ago
Scott Anderson d09ca20a4d Use gbm_bo_map for cursor
7 years ago
Scott Anderson dbe66d1963 Style changes
7 years ago
Scott Anderson 5f7042a1f2 Moved headers
7 years ago
Scott Anderson d307c2f2c2 Renamed some variables to be less generic
7 years ago
Scott Anderson 1db97a9af9 Updated DRM cursor rendering
7 years ago
Scott Anderson aedfa27d3a Clean up resources when plane is reassigned
7 years ago
Scott Anderson 2f8b5c4448 More cleanups
7 years ago
Scott Anderson dd7a349295 Various cleanups
7 years ago
Scott Anderson d1ca1ec16e Split off some functions into drm-util
7 years ago
Scott Anderson c46605d605 Use plane for rendering
7 years ago
Scott Anderson e16c5504cd Add planes.
7 years ago
Scott Anderson 67b51f0922 Upgraded CRTC and Encoder matching
7 years ago
Scott Anderson 31867a1b2e Various changes/cleanups
7 years ago
Scott Anderson 7b772e1a4b DRM resource initalisation
7 years ago
Tony Crisci d822e0768b Use ARGB8888 pixel format for cursor bo
7 years ago
Tony Crisci 8b6dc48355 bugfix: add null check on output gbm on pageflip
7 years ago
Drew DeVault 038dfdbc85 Log max cursor size on error
8 years ago
Scott Anderson 82322d81a7 Hardware cursor improvements.
8 years ago
Scott Anderson 0cd94f0cf0 Added software cursor fallback
8 years ago
Drew DeVault 168f0955ab Add wl_output globals for wlr_outputs
8 years ago
Drew DeVault f4453d104d Reorganize wlr-common
8 years ago
Drew DeVault fd91244e83 Update everyone to use new headers
8 years ago
Scott Anderson 55854565dc Fixed VT switching
8 years ago
Drew DeVault b9d36c8149 Add dynamic output resizing for Wayland backend
8 years ago
Drew DeVault e9609e9adf Allocate framebuffers for hardware cursors
8 years ago
Drew DeVault 7e038a6110 Add (broken) DRM hardware cursors
8 years ago
Drew DeVault e65f83d7f2 Add more DRM info to wlr_output
8 years ago
Drew DeVault 2b06f88f0b Combine internal DRM headers into one
8 years ago
Scott Anderson 63c3faa006 Fixed rendering bug: Delay calling gbm_surface_release_buffer until it
8 years ago
Scott Anderson 382f712792 Merge remote-tracking branch 'upstream/master' into rotation
8 years ago
Scott Anderson 632a7acb03 Filled out more wlr_output fields.
8 years ago
Drew DeVault 6f5c70ac69 Let backend track transform state
8 years ago
Scott Anderson c97de93fe1 Added output rotation example
8 years ago
Drew DeVault 7d82476590 Refactor type implementations
8 years ago
Scott Anderson de44994dfc Udev event device matching
8 years ago
ascent12 62d612a01e Merge branch 'master' into session
8 years ago
Drew DeVault e2ee67125e s/wayland.h/types.h/g
8 years ago
Drew DeVault c7f6981d9c Clean up outputs on exit
8 years ago
Drew DeVault fee409bd0a Generalize DPMS, remove DRM refs from example
8 years ago
Drew DeVault 03c9b46034 Have backend manage opengl context
8 years ago
Scott Anderson 7efdd3c9fc Refactored renderer startup to function.
8 years ago
Scott Anderson 058b8bdf27 Working commit
8 years ago
Scott Anderson 409065ba2e Changed to signed
8 years ago
Scott Anderson eac603bfdf Merge branch 'master' into refresh
8 years ago
Scott Anderson 3000b8615f More accurate refresh rates (mHz)
8 years ago
Scott Anderson 599d1bcbdc DPMS support
8 years ago
Drew DeVault 42878b45a1 Remove unnecessary TODO
8 years ago
Drew DeVault 00931f2f8f Generalize output handling
8 years ago
Drew DeVault 15b1ce9e6c Refactor backend state management
8 years ago
Scott Anderson 7e9feb70a0 Fixed hotplugging + make EGL more chatty.
8 years ago
Scott Anderson ef9768858e Changed modesetting interface.
8 years ago
Scott Anderson d196a79b6c Changed backend to accept wl_display.
8 years ago
Scott Anderson 18387468bb Renamed 'wlr_drm_display' to 'wlr_drm_output'
8 years ago
Scott Anderson 15d247bf34 Changed drm to use new EGL interface.
8 years ago
Scott Anderson e446a5300b Added example.
8 years ago
Scott Anderson e9d716fc0c Changed display to use list_t.
8 years ago
Scott Anderson 115d4ae637 Changed events to use wayland functions.
8 years ago
Scott Anderson 562d43a5ec Changed logging.
8 years ago
Scott Anderson 41a82fd2fc Renaming.
8 years ago
Scott Anderson 9ac46ec5ed Got it to build
8 years ago
Scott Anderson aca13320b3 Inital commit of libotd.
8 years ago