Commit 1cfd791833cb9908fe13fac2aaa27b236aa1e92f
1 parent
d8cd5ed9
display remaining sleep time for next frame in window
Showing
3 changed files
with
19 additions
and
9 deletions
... | ... | @@ -344,12 +344,12 @@ fn main() { |
344 | 344 | // use floating point values. |
345 | 345 | // https://rechneronline.de/pi/tetrahedron.php |
346 | 346 | // yi = a / 12 * √6 |
347 | - // yc = a / 4 * √6 | |
348 | - // zi = √3 / 6 * a | |
349 | - // zc = √3 / 3 * a | |
350 | 347 | let yi = 60.0 / 12.0 * 6.0.sqrt().unwrap(); |
348 | + // yc = a / 4 * √6 | |
351 | 349 | let yc = 60.0 / 4.0 * 6.0.sqrt().unwrap(); |
350 | + // zi = √3 / 6 * a | |
352 | 351 | let zi = 3.0.sqrt().unwrap() / 6.0 * 60.0; |
352 | + // zc = √3 / 3 * a | |
353 | 353 | let zc = 3.0.sqrt().unwrap() / 3.0 * 60.0; |
354 | 354 | |
355 | 355 | let i = Vector( 0.0, yc, 0.0); |
... | ... | @@ -471,7 +471,6 @@ fn main() { |
471 | 471 | canvas.draw( &co, Coordinate(0,0), 0x0000FF); |
472 | 472 | canvas.draw( &cl, Coordinate(0,0), 0x0000FF); |
473 | 473 | canvas.draw( &cr, Coordinate(0,0), 0x0000FF); |
474 | - canvas.show(); | |
475 | 474 | |
476 | 475 | let passed = Instant::now() - last; |
477 | 476 | let f = (passed.as_nanos() / step.as_nanos()) as u32; |
... | ... | @@ -481,7 +480,10 @@ fn main() { |
481 | 480 | } |
482 | 481 | |
483 | 482 | last = last + step*(f + 1); |
484 | - println!("Sleep for: {:?}", last - Instant::now()); | |
483 | + canvas.put_text( Coordinate(10, 15) | |
484 | + , &format!( "sleep: {:?}" | |
485 | + , last - Instant::now() )); | |
486 | + canvas.show(); | |
485 | 487 | thread::sleep(last - Instant::now()); |
486 | 488 | } |
487 | 489 | }); | ... | ... |
... | ... | @@ -74,10 +74,10 @@ impl XcbEasel { |
74 | 74 | , screen.root(), 0, 0, width, width, 0 |
75 | 75 | , xcb::WINDOW_CLASS_INPUT_OUTPUT as u16 |
76 | 76 | , screen.root_visual() |
77 | - , &[(xcb::CW_BACK_PIXEL, screen.white_pixel())] ); | |
77 | + , &[(xcb::CW_BACK_PIXEL, screen.black_pixel())] ); | |
78 | 78 | |
79 | 79 | xcb::create_gc( &conn, gc, screen.root() |
80 | - , &[ (xcb::GC_FOREGROUND, screen.black_pixel()) | |
80 | + , &[ (xcb::GC_FOREGROUND, screen.white_pixel()) | |
81 | 81 | , (xcb::GC_GRAPHICS_EXPOSURES, 0) ] ); |
82 | 82 | |
83 | 83 | let (shmid, shm) = getshm((width * height) as usize); |
... | ... | @@ -120,8 +120,8 @@ fn getshm<'a>(size :usize) -> (i32, &'a mut [u32]) { |
120 | 120 | |
121 | 121 | unsafe { |
122 | 122 | let id = libc::shmget( libc::IPC_PRIVATE |
123 | - , size * 4 | |
124 | - , libc::IPC_CREAT | 0o744 ); | |
123 | + , size * 4 | |
124 | + , libc::IPC_CREAT | 0o744 ); | |
125 | 125 | let ptr = libc::shmat(id, ptr::null(), 0); |
126 | 126 | (id as i32, from_raw_parts_mut(ptr as *mut u32, size)) |
127 | 127 | } |
... | ... | @@ -233,6 +233,13 @@ impl<'a> Canvas for XcbCanvas<'a> { |
233 | 233 | } |
234 | 234 | } |
235 | 235 | |
236 | + fn put_text(&self, ofs :Coordinate, s :&str) { | |
237 | + let Coordinate(xofs, yofs) = ofs; | |
238 | + xcb::xproto::image_text_8( &self.conn, self.pixmap, self.gc | |
239 | + , xofs as i16, yofs as i16, s ); | |
240 | + self.conn.flush(); | |
241 | + } | |
242 | + | |
236 | 243 | fn show(&self) { |
237 | 244 | xcb::copy_area( &self.conn, self.pixmap, self.window, self.gc |
238 | 245 | , 0, 0, 0, 0 | ... | ... |
Please
register
or
login
to post a comment