summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-10-24Fix some compiler warningsJoe Wilm
2016-10-24Add discriminant_value test for cell::ColorJoe Wilm
The renderer should be able to use the discriminant_value to determine vertex colors.
2016-10-23Proof of concept live reloading for colorsJoe Wilm
The architecture here is really poor. Need to move file watching into a dedicated location and probably have an spmc broadcast queue. other modules besides rendering will care about config reloading in the future.
2016-10-16Add test exhibiting SIGBUS on my machineJoe Wilm
2016-10-15Make colors configurable from fileJoe Wilm
Added solarized dark color scheme for testing purposes. Resolves #1.
2016-10-14Rustup and update dependenciesJoe Wilm
Now uses serde_dervive \o/
2016-10-14Fix X11 WaitEventsIterator Busy LoopJoe Wilm
Resolves #10.
2016-10-10Implement blank character insertionJoe Wilm
This is used by things like Bash's reverse-i-search and things get *very* messed up without it.
2016-10-08Add script for creating flamegraph with perfJoe Wilm
Resolves #8
2016-10-08Update cargo.lock with osx clipboardJoe Wilm
2016-10-08Implement copypasta::Load for macos::ClipboardJoe Wilm
2016-10-08Start implementing copypasta, a clipboard libraryJoe Wilm
Currently it only supports x11 via the xclip program, and that only supports reading the clipboard contents.
2016-09-27Don't write v when pasting on macOSJoe Wilm
This is a bit of an experiment to see if simply handling 'v' in the bindings will work or has any bugs not going through ReceivedCharacter. The change is necessary though to prevent 'v' from being written in front of every clipboard paste.
2016-09-26wipJoe Wilm
doesn't work on ubuntu 16.04 for some reason
2016-09-26Clean up event_loop moduleJoe Wilm
The main loop body was originally all written inline. There's now separate functions for each of the actions the loop handles including channel events, pty reading, and pty writing. There's also helper functions on State for managing the write list. The `EventLoop` and its `State` are returned when joining with the thread it spawns. This will potentially be helpful once config reloading is introduced.
2016-09-25Refactor EventLoop into event_loop moduleJoe Wilm
This type and its implementations were seriously cluttering main.rs.
2016-09-25Resolve compiler warningsJoe Wilm
2016-09-25Fix bug with scrolling regionsJoe Wilm
Linefeeds were triggering scrolls in incorrect situations. Resolves #9.
2016-09-24Use evented I/O for the ptyJoe Wilm
This was largely an experiment to see whether writing and reading from a separate thread was causing terminal state corruption as described in https://github.com/jwilm/alacritty/issues/9. Although this doesn't seem to fix that particular issue. Keeping this because it generally seems more correct than reading/writing from separate locations.
2016-09-23Fix some compiler warningsJoe Wilm
Also enables debug symbols in release profile by default. Until Alacritty ships, there's going to be lots of perf analysis which needs debug symbols. The PriorityMutex low priority method was never used. Now it's just a fair mutex.
2016-09-23Add unhandled `execute` logJoe Wilm
2016-09-23Fix missing `esc_dispatch` logJoe Wilm
This was previously logging as an unhandled `execute`.
2016-09-21Fix refresh bugJoe Wilm
Terminal output wouldn't reliably refresh the screen. Fix is to only modify this flag when the terminal lock is held which suggests a larger refactoring should happen.
2016-09-19Update VTE for OSC string fixJoe Wilm
2016-09-18Delete an extra spaceJoe Wilm
2016-09-18Make use of `unlikely` intrinsicJoe Wilm
There's some bounds checks we do that panic if the condition is ever true.
2016-09-18Minor fixesJoe Wilm
Remove random println and add a missing #[inline]
2016-09-18rustupJoe Wilm
Adds a `rustc-version` file which can be used to get the proper compiler. rustup override set $(cat rustc-version)
2016-09-18Rewrite ansi parser using vte crateJoe Wilm
Using the vte crate allows removal of the ansi parser state machine and enables us to just be concerned with actions described in the protocol. In addition to making alacritty simpler, this also improves correctness and performance.
2016-09-16Remove extra wait_events()Joe Wilm
Allegedly x11 wants you to wait for a refresh event before using the context, but that doesn't arrive on all platforms (notably macOS).
2016-09-16Fix crashJoe Wilm
There might be a better way to track cursor state such that these checks aren't necessary.
2016-09-15Implement delete_charsJoe Wilm
Among other issues, this fixes a very vissible issue with typing in the middle of a shell command.
2016-09-06Fix resize not redrawing immediatelyJoe Wilm
2016-09-05Update deps and remove printlnsJoe Wilm
2016-09-01Move rendering back to main threadJoe Wilm
This is only like the third time I've made this change. The issue of having a blank screen at startup is due to x11 event loop + glX interactions. Not sure what the problem is specifically, but glXMakecurrent was blocking until the x11 event loop advanced. The input and rendering are able to live on the same thread while still removing unnecessary renders due to the glutin::WindowProxy::wakeup_event_loop() method. The PtyReader just kicks the event loop when there's something to do; otherwise, the event loop just waits for something to happen and _doesn't_ draw in free run mode.
2016-08-31Eliminate extra rendersJoe Wilm
Currently has a bug where screen is blank at startup. That aside, Alacritty uses basically 0 CPU now. The input thread is still separate from the render thread, but, given the ability to wake the event loop, it may be possible to merge them again. I'm not sure if that's actually desirable. Performance is seemingly unchanged.
2016-08-30Update serde, glutinJoe Wilm
Glutin includes GlContext::clear_current() for linux
2016-08-29Separate input handling from renderingJoe Wilm
To minimize rendering, the input must be handled in a separate thread. To see, why, consider the optimal rendering solution: renders are only necessary when the pty has data that changes the terminal state, OR there is a window event which changes the graphics state. When not drawing, the render thread is to remain parked at a condition variable, and it's not possible to handle input while parked! Thus, we need a separate thread. In addition to adding the separate thread, each subsystem thread is now spawned in a separate function to (hopefully) improve readability.
2016-08-22Scrolling v2Joe Wilm
The previous scrolling + scroll region implementation exhibited display corruption bugs in several applications including tmux, irssi, htop, and vim. The new implementation doesn't seem to suffer from any of those issues. This implementation is able to `find /usr` on my machine (nearly 600k lines) in ~2.0 seconds while st is able to do the same in ~2.2 seconds. Alacritty is officially faster!
2016-08-22Term [unimplemented] prints to stderr in releaseJoe Wilm
Previously these were only printed in debug mode, but they are nice to have in release to see if something should be called that's not when an application doesn't behave properly.
2016-08-22Term handles LineClearMode::{Left, All}Joe Wilm
2016-08-19Fix scrolling directions to match ansi docJoe Wilm
This also fixed an issue with reverse index where columns where used instead of lines.
2016-08-19Add Origin mode to parserJoe Wilm
2016-08-19Fix bug in inputJoe Wilm
In applications with a scroll region, newlines were not being properly added because the scroll region was ignored.
2016-08-19Fix corruption issueJoe Wilm
Fixes an issue where input with the cursor at the bottom-right of the terminal would cause a crash.
2016-08-14Fix testsJoe Wilm
Errors/warnings fixed.
2016-08-14Pin nightly compiler on travisJoe Wilm
This will prevent builds from being constantly broken... arbitrary nightlies are not yet supported.
2016-08-14Support bold/italic font rendering on LinuxJoe Wilm
The FreeType font Rasterizer API is updated to match the CoreText Rasterizer. This enabled bold/italic fonts since the rest of the codebase has already been updated.
2016-08-12Support bold/italic font rendering on macOSJoe Wilm
This patch adds support for rendering italic fonts and bold fonts. The `font` crate has a couple of new paradigms to support this: font keys and glyph keys. `FontKey` is a lightweight (4 byte) identifier for a font loaded out of the rasterizer. This replaces `FontDesc` for rasterizing glyphs from a loaded font. `FontDesc` had the problem that it contained two strings, and the glyph cache needs to store a copy of the font key for every loaded glyph. `GlyphKey` is now passed to the glyph rasterization method instead of a simple `char`. `GlyphKey` contains information including font, size, and the character. The rasterizer APIs do not define what happens when loading the same font from a `FontDesc` more than once. It is assumed that the application will track the resulting `FontKey` instead of asking the font to be loaded multiple times.
2016-08-03Add support for CGContextSetFontSmoothingStyleJoe Wilm
This enables narrower rendering of glyphs and it tends to look a bit better. iTerm2 and Terminal both do this.