Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
[package]
edition = "2015"
name = "scrap"
description = "Screen capture made easy."
version = "0.5.0"
Expand Down
1 change: 1 addition & 0 deletions build.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
fn main() {
println!("cargo::rustc-check-cfg=cfg(dxgi,quartz,x11)");
if cfg!(windows) {
// The first choice is Windows because DXGI is amazing.
println!("cargo:rustc-cfg=dxgi");
Expand Down
18 changes: 10 additions & 8 deletions src/dxgi/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,11 @@ impl Capturer {
let mut device = ptr::null_mut();
let mut context = ptr::null_mut();
let mut duplication = ptr::null_mut();
let mut desc = unsafe { mem::uninitialized() };
let mut desc = unsafe { mem::zeroed() };

if unsafe {
let mut feature_level = D3D_FEATURE_LEVEL_9_1;

D3D11CreateDevice(
&mut **display.adapter,
D3D_DRIVER_TYPE_UNKNOWN,
Expand All @@ -62,7 +64,7 @@ impl Capturer {
0, // Feature levels' length.
D3D11_SDK_VERSION,
&mut device,
&mut D3D_FEATURE_LEVEL_9_1,
&mut feature_level,
&mut context
)
} != S_OK {
Expand Down Expand Up @@ -105,7 +107,7 @@ impl Capturer {

unsafe fn load_frame(&mut self, timeout: UINT) -> io::Result<()> {
let mut frame = ptr::null_mut();
let mut info = mem::uninitialized();
let mut info = mem::zeroed();
self.data = ptr::null_mut();

wrap_hresult((*self.duplication).AcquireNextFrame(
Expand All @@ -115,7 +117,7 @@ impl Capturer {
))?;

if self.fastlane {
let mut rect = mem::uninitialized();
let mut rect = mem::zeroed();
let res = wrap_hresult(
(*self.duplication).MapDesktopSurface(&mut rect)
);
Expand All @@ -133,7 +135,7 @@ impl Capturer {
self.surface = ptr::null_mut();
self.surface = self.ohgodwhat(frame)?;

let mut rect = mem::uninitialized();
let mut rect = mem::zeroed();
wrap_hresult((*self.surface).Map(
&mut rect,
DXGI_MAP_READ
Expand All @@ -155,7 +157,7 @@ impl Capturer {
&mut texture as *mut *mut _ as *mut *mut _
);

let mut texture_desc = mem::uninitialized();
let mut texture_desc = mem::zeroed();
(*texture).GetDesc(&mut texture_desc);

texture_desc.Usage = D3D11_USAGE_STAGING;
Expand Down Expand Up @@ -302,14 +304,14 @@ impl Displays {
// We get the display's details.

let desc = unsafe {
let mut desc = mem::uninitialized();
let mut desc = mem::zeroed();
(*output).GetDesc(&mut desc);
desc
};

// We cast it up to the version needed for desktop duplication.

let mut inner = ptr::null_mut();
let mut inner = ptr::null_mut() as *mut IDXGIOutput1;
unsafe {
(*output).QueryInterface(
&IID_IDXGIOUTPUT1,
Expand Down
2 changes: 1 addition & 1 deletion src/quartz/display.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ impl Display {

pub fn online() -> Result<Vec<Display>, CGError> {
unsafe {
let mut arr: [u32; 16] = mem::uninitialized();
let mut arr: [u32; 16] = mem::zeroed();
let mut len: u32 = 0;

match CGGetOnlineDisplayList(16, arr.as_mut_ptr(), &mut len) {
Expand Down