Skip to content

Allow using X11 / Wayland on platforms that have another standard backend (macOS, Android) #211

@Quackdoc

Description

@Quackdoc

Partially related to #44 I am trying to compile some rust application targeting termux (x11) and am getting the below errors. I have tried both compiling within termux, as well as on my desktop

command: cargo build --target x86_64-linux-android

Error log
error[E0392]: parameter `D` is never used
  --> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:33:20
   |
33 | pub struct Context<D> {
   |                    ^ unused parameter
   |
   = help: consider removing `D`, referring to it in a field, or using a marker such as `PhantomData`
   = help: if you intended `D` to be a const parameter, use `const D: usize` instead

error[E0392]: parameter `D` is never used
  --> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:74:20
   |
74 | pub struct Surface<D, W> {
   |                    ^ unused parameter
   |
   = help: consider removing `D`, referring to it in a field, or using a marker such as `PhantomData`
   = help: if you intended `D` to be a const parameter, use `const D: usize` instead

error[E0392]: parameter `W` is never used
  --> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:74:23
   |
74 | pub struct Surface<D, W> {
   |                       ^ unused parameter
   |
   = help: consider removing `W`, referring to it in a field, or using a marker such as `PhantomData`
   = help: if you intended `W` to be a const parameter, use `const W: usize` instead

error[E0392]: parameter `'a` is never used
   --> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:197:19
    |
197 | pub struct Buffer<'a, D, W> {
    |                   ^^ unused parameter
    |
    = help: consider removing `'a`, referring to it in a field, or using a marker such as `PhantomData`

error[E0392]: parameter `D` is never used
   --> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:197:23
    |
197 | pub struct Buffer<'a, D, W> {
    |                       ^ unused parameter
    |
    = help: consider removing `D`, referring to it in a field, or using a marker such as `PhantomData`
    = help: if you intended `D` to be a const parameter, use `const D: usize` instead

error[E0392]: parameter `W` is never used
   --> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:197:26
    |
197 | pub struct Buffer<'a, D, W> {
    |                          ^ unused parameter
    |
    = help: consider removing `W`, referring to it in a field, or using a marker such as `PhantomData`
    = help: if you intended `W` to be a const parameter, use `const W: usize` instead

error[E0392]: parameter `D` is never used
   --> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/backend_dispatch.rs:180:6
    |
180 |     <D, W> =>
    |      ^ unused parameter
    |
    = help: consider removing `D`, referring to it in a field, or using a marker such as `PhantomData`
    = help: if you intended `D` to be a const parameter, use `const D: usize` instead

error[E0392]: parameter `W` is never used
   --> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/backend_dispatch.rs:180:9
    |
180 |     <D, W> =>
    |         ^ unused parameter
    |
    = help: consider removing `W`, referring to it in a field, or using a marker such as `PhantomData`
    = help: if you intended `W` to be a const parameter, use `const W: usize` instead

error[E0392]: parameter `'a` is never used
   --> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/backend_dispatch.rs:119:40
    |
119 |           pub(crate) enum BufferDispatch<'a, $dgen, $wgen> {
    |                                          ^^ unused parameter
...
179 | / make_dispatch! {
180 | |     <D, W> =>
181 | |     #[cfg(x11_platform)]
182 | |     X11(Rc<backends::x11::X11DisplayImpl<D>>, backends::x11::X11Impl<D, W>, backends::x11::BufferImpl<'a, D, W>),
...   |
194 | |     Orbital(D, backends::orbital::OrbitalImpl<D, W>, backends::orbital::BufferImpl<'a, D, W>),
195 | | }
    | |_- in this macro invocation
    |
    = help: consider removing `'a`, referring to it in a field, or using a marker such as `PhantomData`
    = note: this error originates in the macro `make_dispatch` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0283]: type annotations needed
  --> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:83:15
   |
83 |         match SurfaceDispatch::new(window, &context.context_impl) {
   |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type for type parameter `D` declared on the trait `SurfaceInterface`
   |
   = note: cannot satisfy `_: HasDisplayHandle`
   = help: the following types implement trait `HasDisplayHandle`:
             NoDisplayHandle
             Box<H>
             DisplayHandle<'a>
             Rc<H>
             Arc<H>
             &H
             &mut H
note: required by a bound in `backend_interface::SurfaceInterface::new`
  --> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/backend_interface.rs:15:38
   |
15 | pub(crate) trait SurfaceInterface<D: HasDisplayHandle + ?Sized, W: HasWindowHandle + ?Sized> {
   |                                      ^^^^^^^^^^^^^^^^ required by this bound in `SurfaceInterface::new`
...
21 |     fn new(window: W, context: &Self::Context) -> Result<Self, InitError<W>>
   |        --- required by a bound in this associated function

error[E0282]: type annotations needed
   --> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:137:12
    |
137 |           Ok(Buffer {
    |  ____________^
138 | |             buffer_impl: self.surface_impl.buffer_mut()?,
139 | |             _marker: PhantomData,
140 | |         })
    | |_________^ cannot infer type of the type parameter `D` declared on the struct `Buffer`
    |
help: consider specifying the generic arguments
    |
137 |         Ok(Buffer::<D, W> {
    |                  ++++++++

error[E0283]: type annotations needed
   --> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:147:14
    |
147 |         self.window()
    |              ^^^^^^ cannot infer type for type parameter `D`
    |
    = note: cannot satisfy `_: HasDisplayHandle`
    = help: the following types implement trait `HasDisplayHandle`:
              NoDisplayHandle
              Box<H>
              DisplayHandle<'a>
              Rc<H>
              Arc<H>
              &H
              &mut H
note: required by a bound in `Surface::<D, W>::window`
   --> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:80:9
    |
80  | impl<D: HasDisplayHandle, W: HasWindowHandle> Surface<D, W> {
    |         ^^^^^^^^^^^^^^^^ required by this bound in `Surface::<D, W>::window`
...
101 |     pub fn window(&self) -> &W {
    |            ------ required by a bound in this associated function

error[E0282]: type annotations needed
   --> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:156:23
    |
156 |         self.window().window_handle()
    |                       ^^^^^^^^^^^^^ cannot infer type for type parameter `W`

Some errors have detailed explanations: E0282, E0283, E0392.
For more information about an error, try `rustc --explain E0282`.
error: could not compile `softbuffer` (lib) due to 13 previous errors
warning: build failed, waiting for other jobs to finish...

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions