Commit Graph

313 Commits

Author SHA1 Message Date
Kevin Lange
1a1a8bcdad Fix redrawing and scrolling for wide chars
[ci skip]
2012-09-05 20:42:54 -07:00
Kevin Lange
ac52d41144 Unicode Text Support
* Some applications now support UTF-8 text through the use of a very
  simple decoder.
* The terminal uses a slow, but accurate method to determine the width
  of a character the first time it is printed to the screen. Characters
  are now stored in the terminal in two bytes, rather than one, and may
  in the future be increased to 3 or 4 bytes to ensure support for
  Unicode supplemental planes.
* A simple font-fallback method is employed in the applications that
  support unicode that will make use of the VL Gothic fonts if the
  DejaVu font does not have a character. No guarantees are made for
  support of writing systems other than extended Latin and Japanese.
2012-09-05 20:19:52 -07:00
Kevin Lange
07955c83c6 Fix dozens of build warnings and other oddities.
* Finally bring syscall.h up to speed and include all syscalls in the
  syscall module of the C library.
* Remove the third-party obfuscated C demos (we have nyancat, good
  enough)
* Fix userspace apps to build without complaining about undeclared
  strtok_r by disable __STRICT_ANSI__
* Fix .eh_frame by including the proper stuff with libgcc.
2012-09-04 20:27:49 -07:00
Kevin Lange
efa51d0d56 Don't print silly messages in the terminal...
[ci skip]
2012-09-03 23:54:04 -07:00
Kevin Lange
8ed06789ed New debug printing facilities.
- Can now register a userspace file descriptor as the output for kernel
  print statements through kprintf()
- Can set logging levels for debug print messages, which are separate
  from kernel log events and meant to be more readily visible. Log
  events are recorded in a buffer to be viewed later, though nothing
  actually using logging at the moment.
- Serial output is disabled by default now. You can enable it yourself
  by appending the logtoserial argument to the kernel on boot.
2012-09-03 22:35:11 -07:00
Kevin Lange
bba242dd62 Add a testing framework.
This is an automated system by which we boot qemu headless and use the
serial line to capture output from a testing application that is started
on bootup, running with the VGA terminal shell. This might be expanded
to boot to the graphical display within VNC and perform more advanced
tests with the Python shim using a VNC module for Python; we'll see.
2012-09-02 02:24:25 -07:00
Kevin Lange
c88d6dcb4f Add or update the heading comments for user apps.
Adds useful descriptions to ones that were lacking them, updates ones
that were innacurate, etc.
2012-07-06 21:08:28 -07:00
Kevin Lange
6dae6ac0a7 Add a simple touch command (not exactly compliant) 2012-05-31 20:37:16 +09:00
Kevin Lange
e9e4d89ac8 Toolchain installer now does freetype 2012-05-17 11:50:25 -04:00
Kevin Lange
b7647f108f Build toolchain should produce working gcc now 2012-05-16 23:08:43 -04:00
Kevin Lange
5457de3906 System Debugging Functions syscall 2012-05-16 20:51:37 -04:00
Kevin Lange
99d12d70a6 New WIP dynamic loader. 2012-05-01 13:40:04 -05:00
Kevin Lange
f2d729aee2 Add some write-verification tools [copy seems to work] 2012-04-30 19:01:55 -05:00
Kevin Lange
327523aabf Various bits of cleanup 2012-04-19 20:21:19 -05:00
Kevin Lange
14c9c1039a Graphics testing application with a cool animation. 2012-04-17 18:37:00 -05:00
Kevin Lange
1869a37582 Fix an off-by-one in the pure int alpha_blend 2012-04-17 18:36:29 -05:00
Kevin Lange
1ea3fc5652 Added thickness settings to draw app 2012-04-17 16:06:44 -05:00
Kevin Lange
de684b66c1 Move the Draw quit button into its titlebar for lulz 2012-04-17 15:41:14 -05:00
Kevin Lange
4cb3f0020b Minor stuff 2012-04-17 15:34:34 -05:00
Kevin Lange
40130c6782 Negative mouse coordinates. 2012-04-17 14:25:03 -05:00
Kevin Lange
0b6045918b Centered text for buttons 2012-04-17 13:55:54 -05:00
Kevin Lange
efcae21316 Shared memory fonts library 2012-04-17 13:46:46 -05:00
Kevin Lange
4f2c122af5 Context-based graphics library.
All graphics library commands now take a gfx_context_t pointer, which
points to a simple datastructure describing a rendering context (width,
height, depth, total size, front buffer, backbuffer; where backbuffer =
front buffer when not in double-buffering mode, thus we always render to
backbuffer except on a flip). This may have caused a minor speed
reduction, but I don't really care as it's far more important that we
support multiple graphics contexts.

TODO:
- Shared Memory Fonts library (there are a couple of apps that use these
  so-called "shmem fonts" on their own; we need a dedicated library for
  them)
- Break off "TTK" GUI toolkit into its own library. Since it's just a
  callback-based button framework, this shouldn't be too hard right now.
  Also, with the previous tick, I'll be able to put labels on controls
  and start using text in more places.
2012-04-17 13:21:34 -05:00
Kevin Lange
35074fedec Quit button? Quit button. 2012-04-13 22:20:36 -05:00
Kevin Lange
9987416fad Drawing app has buttons (working on a toolkit) 2012-04-13 01:21:01 -05:00
Kevin Lange
9d4e560b8b Minor mouse fixes 2012-04-12 23:30:04 -05:00
Kevin Lange
5a1a45bc09 Faster mouse response
- Discard lots of packets
- Don't yield?
2012-04-12 23:21:38 -05:00
Kevin Lange
0eaf3a99a3 Separate pthread; add mouse move events? 2012-04-12 22:42:24 -05:00
Kevin Lange
3e70898674 Yeah, disable debug flags while we're still working on initrds... 2012-04-11 16:03:20 -05:00
Kevin Lange
285acf68a0 Reenable login prompts (vga textmode only) 2012-04-11 15:24:24 -05:00
Kevin Lange
d45b8be815 Let nyancat run with proper VGA term support 2012-04-11 00:04:26 -05:00
Kevin Lange
ac7720f396 Reenable support for a VGA text-mode terminal. 2012-04-10 23:35:12 -05:00
Kevin Lange
e60cd2b49e Collect, but do not send, mouse events. 2012-04-10 22:34:36 -05:00
Kevin Lange
e89fb94d2f Exiting terminals, but there's a problem somewhere... 2012-04-10 21:55:41 -05:00
Kevin Lange
eb56624581 Fix up clock appearance 2012-03-29 12:12:06 -05:00
Kevin Lange
3d9d947701 Graphical analogue clock 2012-03-28 20:34:28 -05:00
Kevin Lange
650e85598f Remove Andy Sloane's Donut Mark (It didn't work) 2012-03-28 16:22:48 -05:00
Kevin Lange
76f96a431e Fix some graphics-related things 2012-03-28 15:54:31 -05:00
Kevin Lange
e6addf3419 The panel app uses a hardcoded version number, update it 2012-03-28 01:16:35 -05:00
Kevin Lange
f68ca25622 Boot-to-shell through kernel argument 'single' 2012-03-27 21:47:25 -05:00
Kevin Lange
958262e69d Fix argv[0] bug 2012-03-27 21:36:39 -05:00
Kevin Lange
639881f931 Make things faster, better, stronger, etc. 2012-03-27 19:09:11 -05:00
Kevin Lange
0448e530ec Render moving windows in a cool way 2012-03-27 18:19:35 -05:00
Kevin Lange
9fd73be686 Trying a few fixes... We're still doing some things very, very wrong. 2012-03-27 16:52:46 -05:00
Kevin Lange
fb6e5d59e3 Completely rewrite rendering model for compositor.
We know longer accept DAMAGE and REDRAW commands. Instead, we just loop
and redraw everything anyway (efficiently, mind you). Pipes still have
issues when closed and various other different things.
2012-03-27 13:58:21 -05:00
Kevin Lange
182de81a79 [userspace] Various. BOOT TO TERMINAL 2012-03-23 17:44:37 -05:00
Kevin Lange
103dccf604 ಠ_ಠ 2012-03-20 16:37:49 -05:00
Kevin Lange
3a60e4e6bd Comment the C++ test program 2012-03-20 16:30:59 -05:00
Kevin Lange
1038ceab72 There is something terribly wrong with how we're doing this. 2012-03-20 16:23:24 -05:00
Kevin Lange
c35af17b78 By executing ios_base::Init(), we cout will work... 2012-03-20 16:22:50 -05:00
Kevin Lange
2e4543d956 Oops, silly me. Minor little bug fixed 2012-03-16 20:05:56 -05:00
Kevin Lange
fc00d3f1f9 Terminal improvements 2012-03-16 17:09:00 -05:00
Kevin Lange
816ddc8f3e Lots of process cleanup implemented; improved cursor rendering 2012-03-14 22:03:55 -05:00
Kevin Lange
ffbe7b7b38 A bunch of stuff. 2012-03-14 15:04:12 -05:00
Kevin Lange
2c4e4e5d03 Fix up destroy() so we can (in theory) delete windows from their owning apps 2012-03-13 17:44:19 -05:00
Kevin Lange
03ee7ed9a9 Fix a kernel elf loader bug that was breaking getopt() 2012-03-13 17:43:35 -05:00
Kevin Lange
2791e7fd35 We've been doing some really stupid shit here... 2012-03-10 18:20:34 -06:00
Kevin Lange
db617812e4 Disable resizing of windows 2012-03-10 12:39:13 -06:00
Kevin Lange
f8ca55805a window_destroy is broken and screws up everything 2012-03-10 09:12:40 -06:00
Kevin Lange
73c6171226 Last minute bug fixes 2012-03-08 23:36:40 -06:00
Kevin Lange
a8f32e077f lol 2012-03-08 15:43:00 -06:00
Kevin Lange
ca43444cc5 don't take location for View app 2012-03-08 02:50:33 -06:00
Kevin Lange
c7500735f4 Adjust Nyancat 2012-03-08 01:10:36 -06:00
Kevin Lange
19a12bec78 lol panel 2012-03-07 23:44:02 -06:00
Kevin Lange
c15402af4c Use window server to determine window size for wallpaper 2012-03-07 22:40:58 -06:00
Kevin Lange
7a9961a9b2 Wallpaper application for scalable wallpaper support 2012-03-07 22:31:24 -06:00
Kevin Lange
a9519bd18a Minor updates to userspace apps 2012-03-07 19:35:15 -06:00
Kevin Lange
f3f0a58b95 Cleaner makefile for userspace 2012-03-06 15:32:26 -06:00
Kevin Lange
8fb8edba3a I have no idea idea what I'm doing. 2012-03-01 21:13:52 -06:00
Kevin Lange
a1a6303bee Faster is_top by way of a depth map 2012-02-26 00:45:46 -06:00
Kevin Lange
70fa12eaf6 remove some old test applications 2012-02-26 00:17:14 -06:00
Kevin Lange
2b0d6f6759 Some very simplistic window management 2012-02-25 23:52:09 -06:00
Kevin Lange
35f5266acf *sigh*... 2012-02-25 22:47:20 -06:00
Kevin Lange
61967e17e4 Use shmem fonts for terminal 2012-02-25 21:28:33 -06:00
Kevin Lange
7e71b3c2af Fix focusing 2012-02-23 01:40:37 -06:00
Kevin Lange
52dd077032 Multiple terminals, fixed focusing, getopt is borked 2012-02-23 01:30:56 -06:00
Kevin Lange
ef82703d5d Terminal actually handles input properly [kbd only] 2012-02-23 00:58:14 -06:00
Kevin Lange
db8a75071d We have a terminal. In a window. Seriously. 2012-02-23 00:36:49 -06:00
Kevin Lange
442ad96588 lolz 2012-02-23 00:02:00 -06:00
Kevin Lange
0ab782da19 Merge markus' changes 2012-02-20 23:34:09 -06:00
Kevin Lange
2da22312a5 Merge branch 'master' of github.com:klange/osdev 2012-02-20 23:32:10 -06:00
Kevin Lange
de7a984938 Fix a bunch of bugs in signal handling and scheduling 2012-02-20 23:31:00 -06:00
Kevin Lange
5de319b816 Work on Shmem fonts
Still need to pass sizes around to shm_* functions as a pointer rather
than the actual size so we can retreive sizes; additionally, *p = 0
should mean "we don't want to create this buffer, we only want to
access it if it exists".
2012-02-20 18:33:09 -06:00
Kevin Lange
16b71c532f [compositor] Load up fonts into shm 2012-02-20 12:18:13 -06:00
Kevin Lange
6268eb3f4e Actually allocate a buffer for double buffering... 2012-02-20 09:23:10 -06:00
Kevin Lange
d768932265 Stop specifing core2 for arch in userspace.
This was creating binaries with invalid opcodes on i7 desktop kvm.
Which is hilarious.
2012-02-20 08:39:00 -06:00
Kevin Lange
a222c3f56a Various bits of graphical fun stuff 2012-02-19 22:35:20 -06:00
Kevin Lange
d048006b9c Fix bitmap loading pinkness bug 2012-02-19 21:43:13 -06:00
Kevin Lange
e335a2970a [glogin] Working on the graphical login application 2012-02-19 21:29:40 -06:00
Kevin Lange
e1beca4127 CPU detection moved to userspace app 2012-02-19 19:39:18 -06:00
Kevin Lange
a97194f0bf You stack'd when you should have queue'd! 2012-02-17 15:31:40 -06:00
Kevin Lange
b30cd50864 Keyboard handling in the compositor 2012-02-17 01:28:12 -06:00
Markus Schober
71fd14d6f7 shm_obtain takes a (size_t *), altering it according to the size of the
block it returned.

Conflicts:
	userspace/compositor.c
2012-02-16 03:43:30 -06:00
Markus Schober
6dc90b1ac2 shm_obtain takes a (size_t *) and modifies the value based on the true
size of the block returned.
2012-02-16 03:34:42 -06:00
Markus Schober
79e67dbe16 drawlines will totally tell you if you gave it a key 2012-02-15 23:14:36 -06:00
Kevin Lange
678ed81c65 Extensive stability fixes. I think I finally squashed those stack bugs. 2012-02-16 22:43:41 -06:00
Kevin Lange
8fb69d44cd I have no frickin' clue what's causing these startup crashes. Requires further investigation. 2012-02-16 15:09:56 -06:00
Kevin Lange
a1d821de9b Various fixes 2012-02-16 14:38:50 -06:00
Kevin Lange
a72f9bc7cf Fix stack bug. 2012-02-16 14:31:40 -06:00
Kevin Lange
4694c67936 Add lock options to thread demo app 2012-02-16 01:48:51 -06:00
Kevin Lange
af860d46f2 Update threadtest to actually demonstrate the classic concurrency bug 2012-02-16 01:34:12 -06:00
Kevin Lange
c67d2796ef Finish threading (might still be some bugs) 2012-02-16 01:06:44 -06:00
Kevin Lange
cffbb02240 Stuff and things 2012-02-15 20:50:31 -06:00
Kevin Lange
3980460484 top/left offsets are SIGNED; add julia fractal thingy 2012-02-13 19:46:00 -06:00
Kevin Lange
86fc80a5e6 Fix overlaps by actually assigning real indexes... 2012-02-13 16:35:57 -06:00
Kevin Lange
c211c61369 Well, that works. 2012-02-13 16:21:52 -06:00
Kevin Lange
9e4d78e721 Fix off-by-one rendering issue 2012-02-12 22:42:25 -06:00
Kevin Lange
749c22c2eb There are some heisenbugs here. I can taste them. 2012-02-12 22:24:02 -06:00
Kevin Lange
1f3d78f8ea Redraw root... 2012-02-12 19:34:19 -06:00
Kevin Lange
abf1e5c837 THIS... IS... SPAAAAARTAAA!!! 2012-02-12 19:30:36 -06:00
Kevin Lange
de0bbe739b Fix a bunch of system calls... 2012-02-12 18:47:01 -06:00
Kevin Lange
e453b08dd6 Debugging, use proper signals, etc. 2012-02-12 17:00:21 -06:00
Kevin Lange
9b1e227c0f Fix a dozen different things. 2012-02-12 16:45:23 -06:00
Markus Schober
c47e199802 Working on window functionality 2012-02-12 05:24:40 -06:00
Kevin Lange
adf2b02b4b [user] Remove the keyboard event loop from julia2
It doesn't even need one; eventually, we'll have window management and
you'll just close the app. It should technically just sit in a loop
endlessly after rendering (or waitforsignal, which we don't have yet).
2012-02-11 22:43:26 -06:00
Kevin Lange
ec391b013e Fix merge conflict 2012-02-11 18:02:14 -06:00
Kevin Lange
49adc34013 Fix buffer overwrites and other issues in compositor 2012-02-11 18:01:21 -06:00
Markus Schober
b06b4fc576 Compositor doesn't clobber the heap anymore. 2012-02-11 17:57:22 -06:00
Markus Schober
a3384aac9e The new compositor is armed and (almost) fully operational! 2012-02-11 15:54:01 -06:00
Kevin Lange
824f2dfb94 fix typos 2012-02-11 01:23:27 -06:00
Kevin Lange
a4178b9248 Magic, identifiers, etc. 2012-02-11 01:20:17 -06:00
Kevin Lange
3411eb380f Protocol refinements 2012-02-11 00:06:09 -06:00
Kevin Lange
9315c95452 Command formats and numbers 2012-02-10 23:29:08 -06:00
Kevin Lange
bc692e83df New compositing work 2012-02-10 23:23:20 -06:00
Markus Schober
d28726fae7 [userspace] really simple second compositor built on shm 2012-02-10 22:54:50 -06:00
Markus Schober
45903b204b fixed a subtle bug in shm; added a bunch of utilities to test it 2012-02-10 22:31:38 -06:00
Kevin Lange
e5f3e49c9d [user] lock application (silly, command line) 2012-02-09 15:29:32 -06:00
Kevin Lange
71842055f4 Fix off-by-one 2012-02-08 22:42:11 -06:00
Kevin Lange
3eb42fe0f0 Fix RPG rendering, finally 2012-02-08 21:22:30 -06:00
Kevin Lange
d1bb652db3 Various.
[init] Reenable freetype in the Terminal spawned from init
[nyancat] Fix timing and update animations
[esh] Fix bug with child pid collection and signal handling
2012-02-08 15:56:27 -06:00
Kevin Lange
499184718d just some fun 2012-02-08 12:04:03 -06:00
Kevin Lange
9daca33cb1 Minor compilation fixes 2012-02-08 12:01:25 -06:00
Kevin Lange
dcc82083ed Compositor doesn't spawn a terminal now :D 2012-02-08 02:45:47 -06:00
Kevin Lange
65fa12f482 SIGNALS 2012-02-08 02:40:44 -06:00
Markus Schober
a09be369ea Merge branch 'master' of git://github.com/klange/osdev 2012-02-07 02:32:40 -06:00
Markus Schober
aec24c08f1 Attaching nearly works! 2012-02-07 02:29:28 -06:00
Kevin Lange
4335ade9bc fire demo, again from a1k0n 2012-02-07 00:11:49 -06:00
Kevin Lange
e2dc01bed7 donut checker... though it has a segfault 2012-02-07 00:06:06 -06:00
Kevin Lange
a95cc17853 Mm, donuts 2012-02-06 23:34:35 -06:00
Kevin Lange
fdaf53b0c4 [shm] Working on negotiation functions 2012-02-05 19:56:21 -06:00
Kevin Lange
c4e33117c0 mkdir and creat testing 2012-02-05 16:04:41 -06:00
Kevin Lange
06a9125c21 Drop redefs of syscalls 2012-02-04 22:57:03 -06:00
Kevin Lange
6590b285b5 Mouse improvements (stability, scaling) 2012-02-04 22:29:46 -06:00
Kevin Lange
1110a119c5 Various blootsplash enhancements. 2012-02-04 01:20:33 -06:00
Kevin Lange
505ed79da3 New compositor and boot splash tests; launches terminal eventually. 2012-02-03 21:15:26 -06:00
Kevin Lange
b0e40ae6df Updated graphics library with sprite loading and stuff 2012-02-03 19:47:36 -06:00
Kevin Lange
2e8144493d Bootsplash testing (launches terminal afterwards) 2012-02-03 18:16:47 -06:00
Kevin Lange
aac1d78e35 Drop packets from the mouse if the client isn't reading fast enough 2012-02-02 20:37:50 -06:00
Kevin Lange
90392d47e6 blink blink blink blink blink 2012-02-02 20:28:26 -06:00
Kevin Lange
4366a20a8f Pipe and packet-based mouse device 2012-02-02 16:16:29 -06:00