Fix shmem on android (#272)

* Fix shmem on android

* Switch back to ulong
This commit is contained in:
s1341 2021-08-23 10:46:54 +03:00 committed by GitHub
parent 5caeb46b67
commit fccb9a1c55
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -26,11 +26,12 @@ pub type StdShMemProvider = Win32ShMemProvider;
pub type StdShMem = Win32ShMem;
#[cfg(all(target_os = "android", feature = "std"))]
pub type StdShMemProvider = RcShMemProvider<ServedShMemProvider<AshmemShMemProvider>>;
pub type StdShMemProvider =
RcShMemProvider<ServedShMemProvider<unix_shmem::ashmem::AshmemShMemProvider>>;
#[cfg(all(target_os = "android", feature = "std"))]
pub type StdShMem = RcShMem<ServedShMemProvider<AshmemShMemProvider>>;
pub type StdShMem = RcShMem<ServedShMemProvider<unix_shmem::ashmem::AshmemShMemProvider>>;
#[cfg(all(target_os = "android", feature = "std"))]
pub type StdShMemService = ShMemService<AshmemShMemProvider>;
pub type StdShMemService = ShMemService<unix_shmem::ashmem::AshmemShMemProvider>;
#[cfg(all(feature = "std", target_vendor = "apple"))]
pub type StdShMemProvider = RcShMemProvider<ServedShMemProvider<MmapShMemProvider>>;
@ -465,7 +466,7 @@ where
pub mod unix_shmem {
/// Shared memory provider for Android, allocating and forwarding maps over unix domain sockets.
#[cfg(target_os = "android")]
pub type UnixShMemProvider = ashmem::ServedShMemProvider;
pub type UnixShMemProvider = ashmem::AshmemShMemProvider;
/// Shared memory for Android
#[cfg(target_os = "android")]
pub type UnixShMem = ashmem::AshmemShMem;
@ -909,7 +910,7 @@ pub mod unix_shmem {
//return Err(Error::Unknown("Failed to set the ashmem mapping's name".to_string()));
//};
if ioctl(fd, ASHMEM_SET_SIZE, map_size) != 0 {
if ioctl(fd, ASHMEM_SET_SIZE as _, map_size) != 0 {
close(fd);
return Err(Error::Unknown(
"Failed to set the ashmem mapping's size".to_string(),
@ -944,7 +945,7 @@ pub mod unix_shmem {
unsafe {
let fd: i32 = id.to_string().parse().unwrap();
#[allow(clippy::cast_sign_loss)]
if ioctl(fd, ASHMEM_GET_SIZE) as u32 as usize != map_size {
if ioctl(fd, ASHMEM_GET_SIZE as _) as u32 as usize != map_size {
return Err(Error::Unknown(
"The mapping's size differs from the requested size".to_string(),
));
@ -1001,14 +1002,14 @@ pub mod unix_shmem {
let fd: i32 = self.id.to_string().parse().unwrap();
#[allow(clippy::cast_sign_loss)]
let length = ioctl(fd, ASHMEM_GET_SIZE) as u32;
let length = ioctl(fd, ASHMEM_GET_SIZE as _) as u32;
let ap = ashmem_pin {
offset: 0,
len: length,
};
ioctl(fd, ASHMEM_UNPIN, &ap);
ioctl(fd, ASHMEM_UNPIN as _, &ap);
close(fd);
}
}