Skip to content

Commit

Permalink
Fix tests and clippy warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
sbernauer committed Nov 19, 2023
1 parent 40ce4a2 commit 2ec9200
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 39 deletions.
3 changes: 1 addition & 2 deletions examples/sample/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ fn main() {
println!("Hello, world!");

let server = rfb_get_screen(400, 300, 8, 3, 4);
rfb_framebuffer_malloc(server, 400*300*4);
rfb_framebuffer_malloc(server, 400 * 300 * 4);
rfb_init_server(server);
rfb_run_event_loop(server, -1, 0);
}

5 changes: 2 additions & 3 deletions examples/sample16/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ use vncserver::*;

fn main() {
let server = rfb_get_screen(400, 300, 5, 3, 2);
rfb_framebuffer_malloc(server, 400*300*2);
rfb_framebuffer_malloc(server, 400 * 300 * 2);

let mut j = 0;
let mut j = 0;
while j < 100 {
for i in 0..400 {
rfb_framebuffer_set_rgb16(server, i, j, 0xF800);
Expand All @@ -30,4 +30,3 @@ fn main() {
rfb_framebuffer_free(server);
rfb_screen_cleanup(server);
}

14 changes: 9 additions & 5 deletions vncserver/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,26 @@ use std::env;
use std::path::PathBuf;

fn bindgen_vncserver() {
let libvncserver= pkg_config::probe_library("libvncserver").unwrap();
let libvncserver = pkg_config::probe_library("libvncserver").unwrap();

let link_paths = format!("{}", libvncserver.link_paths[0].to_str().unwrap());
let lib_path = PathBuf::from(env::current_dir().unwrap().join(link_paths));
let link_paths = libvncserver.link_paths[0].to_str().unwrap();
let lib_path = env::current_dir().unwrap().join(link_paths);

println!("cargo:rustc-link-search={}", lib_path.display());
println!("cargo:rustc-link-lib=dylib=vncserver");

let header = format!("{}/{}", libvncserver.include_paths[0].to_str().unwrap(), "rfb/rfb.h");
let header = format!(
"{}/rfb/rfb.h",
libvncserver.include_paths[0].to_str().unwrap(),
);
let bindings = bindgen::Builder::default()
.header(header)
.generate()
.expect("unable to generate rfb bindings");

let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
bindings.write_to_file(out_path.join("rfb.rs"))
bindings
.write_to_file(out_path.join("rfb.rs"))
.expect("couldn't write bindings!");
}

Expand Down
30 changes: 20 additions & 10 deletions vncserver/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,11 @@
//!
//! ```no_run
//! use vncserver::*;
//! fn main() {
//! let server = rfb_get_screen(400, 300, 8, 3, 4);
//! rfb_framebuffer_malloc(server, 400*300*4);
//! rfb_init_server(server);
//! rfb_run_event_loop(server, -1, 0);
//! }
//!
//! let server = rfb_get_screen(400, 300, 8, 3, 4);
//! rfb_framebuffer_malloc(server, 400 * 300 * 4);
//! rfb_init_server(server);
//! rfb_run_event_loop(server, -1, 0);
//! ```
mod rfb;
Expand All @@ -31,7 +30,7 @@ pub const RFB_TRUE: i8 = 1;
/// depth: ::std::os::raw::c_int,
/// bitsPerPixel: ::std::os::raw::c_int,
/// sizeInBytes: ::std::os::raw::c_int,
/// ...
/// // ...
/// }
/// ```
pub type RfbScreenInfoPtr = rfb::rfbScreenInfoPtr;
Expand All @@ -40,9 +39,20 @@ pub type RfbBool = rfb::rfbBool;
pub type RfbKeySym = rfb::rfbKeySym;
pub type RfbClientRec = rfb::rfbClientRec;


pub fn rfb_get_screen(width: i32, height: i32, bits_per_sample: i32, samples_per_pixel: i32, bytes_per_pixel: i32) -> RfbScreenInfoPtr {
rfb::rfb_get_screen(width, height, bits_per_sample, samples_per_pixel, bytes_per_pixel)
pub fn rfb_get_screen(
width: i32,
height: i32,
bits_per_sample: i32,
samples_per_pixel: i32,
bytes_per_pixel: i32,
) -> RfbScreenInfoPtr {
rfb::rfb_get_screen(
width,
height,
bits_per_sample,
samples_per_pixel,
bytes_per_pixel,
)
}

pub fn rfb_screen_cleanup(ptr: RfbScreenInfoPtr) {
Expand Down
48 changes: 29 additions & 19 deletions vncserver/src/rfb/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,32 @@
#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)]
#![allow(clippy::upper_case_acronyms)]

use std;
use core::slice;

include!(concat!(std::env!("OUT_DIR"), "/rfb.rs"));


pub fn rfb_get_screen(width: i32, height: i32, bits_per_sample: i32, samples_per_pixel: i32, bytes_per_pixel: i32) -> rfbScreenInfoPtr {
let mut arg_len = 0 as i32;
pub fn rfb_get_screen(
width: i32,
height: i32,
bits_per_sample: i32,
samples_per_pixel: i32,
bytes_per_pixel: i32,
) -> rfbScreenInfoPtr {
let mut arg_len = 0;
let mut arg_ptr: *mut i8 = std::ptr::null_mut();

unsafe {
let server = rfbGetScreen(&mut arg_len, &mut arg_ptr, width, height, bits_per_sample, samples_per_pixel, bytes_per_pixel);
server
rfbGetScreen(
&mut arg_len,
&mut arg_ptr,
width,
height,
bits_per_sample,
samples_per_pixel,
bytes_per_pixel,
)
}
}

Expand All @@ -39,21 +51,19 @@ pub fn rfb_framebuffer_free(ptr: rfbScreenInfoPtr) {
}

pub fn rfb_framebuffer_set_rgb16(ptr: rfbScreenInfoPtr, x: i32, y: i32, rgb16: u16) {
unsafe {
unsafe {
let addr = (*ptr).frameBuffer as *mut u16;
let fb_size = (*ptr).height * (*ptr).width * (*ptr).bitsPerPixel / 2;
let slice: &mut [u16] = slice::from_raw_parts_mut(addr, fb_size as usize);
let pos = (*ptr).width*y + x;
let pos = (*ptr).width * y + x;
if pos < fb_size {
slice[pos as usize] = rgb16;
}
}
}
}

pub fn rfb_process_events(ptr: rfbScreenInfoPtr, usec: i64) -> rfbBool {
unsafe {
rfbProcessEvents(ptr, usec as ::std::os::raw::c_long)
}
unsafe { rfbProcessEvents(ptr, usec as ::std::os::raw::c_long) }
}

pub fn rfb_kbd_add_event(ptr: rfbScreenInfoPtr, cb: rfbKbdAddEventProcPtr) {
Expand All @@ -63,19 +73,19 @@ pub fn rfb_kbd_add_event(ptr: rfbScreenInfoPtr, cb: rfbKbdAddEventProcPtr) {
}

pub fn rfb_mark_rect_as_modified(ptr: rfbScreenInfoPtr, x1: i32, y1: i32, x2: i32, y2: i32) {
unsafe {
rfbMarkRectAsModified(ptr,
unsafe {
rfbMarkRectAsModified(
ptr,
x1 as ::std::os::raw::c_int,
y1 as ::std::os::raw::c_int,
x2 as ::std::os::raw::c_int,
y2 as ::std::os::raw::c_int);
}
y2 as ::std::os::raw::c_int,
);
}
}

pub fn rfb_is_active(ptr: rfbScreenInfoPtr) -> rfbBool {
unsafe {
rfbIsActive(ptr)
}
unsafe { rfbIsActive(ptr) }
}

pub fn rfb_init_server(ptr: rfbScreenInfoPtr) {
Expand Down

0 comments on commit 2ec9200

Please sign in to comment.