1
0
Fork 0
forked from wry/wry

ipc: make source/offer ids type safe

This commit is contained in:
Julian Orth 2024-03-30 20:51:25 +01:00
parent 00efe7b51b
commit 7cbe5720c6
8 changed files with 27 additions and 27 deletions

View file

@ -5,7 +5,8 @@ use {
ifs::{
ipc::{
break_device_loops, destroy_data_device, wl_data_offer::WlDataOffer,
wl_data_source::WlDataSource, DeviceData, IpcVtable, OfferData, Role, SourceData,
wl_data_source::WlDataSource, DataOfferId, DeviceData, IpcVtable, OfferData, Role,
SourceData,
},
wl_seat::{WlSeatError, WlSeatGlobal},
wl_surface::{SurfaceRole, WlSurfaceError},
@ -232,7 +233,7 @@ impl IpcVtable for ClipboardIpc {
) -> Result<Rc<Self::Offer>, ClientError> {
let rc = Rc::new(WlDataOffer {
id: client.new_id()?,
u64_id: client.state.data_offer_ids.fetch_add(1),
offer_id: client.state.data_offer_ids.next(),
client: client.clone(),
device: device.clone(),
data: offer_data,
@ -250,8 +251,8 @@ impl IpcVtable for ClipboardIpc {
source.send_cancelled(seat);
}
fn get_offer_id(offer: &Self::Offer) -> u64 {
offer.u64_id
fn get_offer_id(offer: &Self::Offer) -> DataOfferId {
offer.offer_id
}
fn send_offer(dd: &Self::Device, offer: &Rc<Self::Offer>) {
@ -280,10 +281,6 @@ impl IpcVtable for ClipboardIpc {
fn get_offer_seat(offer: &Self::Offer) -> Rc<WlSeatGlobal> {
offer.device.seat.clone()
}
fn source_eq(left: &Self::Source, right: &Self::Source) -> bool {
left as *const _ == right as *const _
}
}
object_base! {

View file

@ -5,8 +5,8 @@ use {
break_offer_loops, destroy_data_offer, receive_data_offer,
wl_data_device::{ClipboardIpc, WlDataDevice},
wl_data_device_manager::DND_ALL,
OfferData, Role, OFFER_STATE_ACCEPTED, OFFER_STATE_DROPPED, OFFER_STATE_FINISHED,
SOURCE_STATE_FINISHED,
DataOfferId, OfferData, Role, OFFER_STATE_ACCEPTED, OFFER_STATE_DROPPED,
OFFER_STATE_FINISHED, SOURCE_STATE_FINISHED,
},
leaks::Tracker,
object::Object,
@ -32,7 +32,7 @@ const INVALID_OFFER: u32 = 3;
pub struct WlDataOffer {
pub id: WlDataOfferId,
pub u64_id: u64,
pub offer_id: DataOfferId,
pub client: Rc<Client>,
pub device: Rc<WlDataDevice>,
pub data: OfferData<ClipboardIpc>,

View file

@ -5,8 +5,8 @@ use {
ipc::{
break_device_loops, destroy_data_device,
zwp_primary_selection_offer_v1::ZwpPrimarySelectionOfferV1,
zwp_primary_selection_source_v1::ZwpPrimarySelectionSourceV1, DeviceData,
IpcVtable, OfferData, Role, SourceData,
zwp_primary_selection_source_v1::ZwpPrimarySelectionSourceV1, DataOfferId,
DeviceData, IpcVtable, OfferData, Role, SourceData,
},
wl_seat::{WlSeatError, WlSeatGlobal},
},
@ -179,7 +179,7 @@ impl IpcVtable for PrimarySelectionIpc {
};
let rc = Rc::new(ZwpPrimarySelectionOfferV1 {
id,
u64_id: client.state.data_offer_ids.fetch_add(1),
offer_id: client.state.data_offer_ids.next(),
seat: device.seat.clone(),
client: client.clone(),
data: offer_data,
@ -197,8 +197,8 @@ impl IpcVtable for PrimarySelectionIpc {
source.send_cancelled();
}
fn get_offer_id(offer: &Self::Offer) -> u64 {
offer.u64_id
fn get_offer_id(offer: &Self::Offer) -> DataOfferId {
offer.offer_id
}
fn send_offer(dd: &Self::Device, offer: &Rc<Self::Offer>) {
@ -224,10 +224,6 @@ impl IpcVtable for PrimarySelectionIpc {
fn get_offer_seat(offer: &Self::Offer) -> Rc<WlSeatGlobal> {
offer.seat.clone()
}
fn source_eq(left: &Self::Source, right: &Self::Source) -> bool {
left as *const _ == right as *const _
}
}
object_base! {

View file

@ -4,7 +4,7 @@ use {
ifs::{
ipc::{
break_offer_loops, destroy_data_offer, receive_data_offer,
zwp_primary_selection_device_v1::PrimarySelectionIpc, OfferData,
zwp_primary_selection_device_v1::PrimarySelectionIpc, DataOfferId, OfferData,
},
wl_seat::WlSeatGlobal,
},
@ -20,7 +20,7 @@ use {
pub struct ZwpPrimarySelectionOfferV1 {
pub id: ZwpPrimarySelectionOfferV1Id,
pub u64_id: u64,
pub offer_id: DataOfferId,
pub seat: Rc<WlSeatGlobal>,
pub client: Rc<Client>,
pub data: OfferData<PrimarySelectionIpc>,