Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit d8301a61 authored by Simon Chan's avatar Simon Chan
Browse files

refactor: code cleanup

parent f3d8ded9
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -20,9 +20,6 @@ export class AdbDaemonWebUsbDeviceObserver
    #exclusionFilters?: USBDeviceFilter[] | undefined;
    #usbManager: USB;

    #onError = new EventEmitter<Error>();
    onError = this.#onError.event;

    #onDeviceAdd = new EventEmitter<AdbDaemonWebUsbDevice[]>();
    onDeviceAdd = this.#onDeviceAdd.event;

@@ -86,7 +83,6 @@ export class AdbDaemonWebUsbDeviceObserver
            this.#handleDisconnect,
        );

        this.#onError.dispose();
        this.#onDeviceAdd.dispose();
        this.#onDeviceRemove.dispose();
        this.#onListChange.dispose();
+0 −1
Original line number Diff line number Diff line
@@ -2,7 +2,6 @@ import type { MaybePromiseLike } from "@yume-chan/async";
import type { Event } from "@yume-chan/event";

export interface DeviceObserver<T> {
    onError: Event<Error>;
    onDeviceAdd: Event<T[]>;
    onDeviceRemove: Event<T[]>;
    onListChange: Event<T[]>;
+7 −2
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

import type { MaybePromiseLike } from "@yume-chan/async";
import { PromiseResolver } from "@yume-chan/async";
import type { Event } from "@yume-chan/event";
import { EventEmitter } from "@yume-chan/event";
import { getUint64LittleEndian } from "@yume-chan/no-data-view";
import type {
@@ -24,7 +25,7 @@ import {

import type { AdbIncomingSocketHandler, AdbSocket, Closeable } from "../adb.js";
import { AdbBanner } from "../banner.js";
import type { DeviceObserver } from "../device-observer.js";
import type { DeviceObserver as DeviceObserverBase } from "../device-observer.js";
import type { AdbFeature } from "../features.js";
import { hexToNumber, sequenceEqual, write4HexDigits } from "../utils/index.js";

@@ -287,7 +288,7 @@ export class AdbServerClient {
    /**
     * Monitors device list changes.
     */
    async trackDevices(): Promise<DeviceObserver<AdbServerClient.Device>> {
    async trackDevices(): Promise<AdbServerClient.DeviceObserver> {
        const connection = await this.createConnection("host:track-devices-l");

        let current: AdbServerClient.Device[] = [];
@@ -752,4 +753,8 @@ export namespace AdbServerClient {
            }
        }
    }

    export interface DeviceObserver extends DeviceObserverBase<Device> {
        onError: Event<Error>;
    }
}
+14 −12
Original line number Diff line number Diff line
@@ -17,19 +17,10 @@ import type {
import type { TinyH264Wrapper } from "./wrapper.js";
import { createTinyH264Wrapper } from "./wrapper.js";

const NOOP = () => {
const noop = () => {
    // no-op
};

export interface TinyH264DecoderInit {
    /**
     * Optional render target canvas element or offscreen canvas.
     * If not provided, a new `<canvas>` (when DOM is available)
     * or a `OffscreenCanvas` will be created.
     */
    canvas?: HTMLCanvasElement | OffscreenCanvas | undefined;
}

export function createCanvas() {
    if (typeof document !== "undefined") {
        return document.createElement("canvas");
@@ -77,7 +68,7 @@ export class TinyH264Decoder implements ScrcpyVideoDecoder {
    #yuvCanvas: YuvCanvas | undefined;
    #initializer: PromiseResolver<TinyH264Wrapper> | undefined;

    constructor({ canvas }: TinyH264DecoderInit = {}) {
    constructor({ canvas }: TinyH264Decoder.Options = {}) {
        if (canvas) {
            this.#renderer = canvas;
        } else {
@@ -180,7 +171,18 @@ export class TinyH264Decoder implements ScrcpyVideoDecoder {
        this.#initializer?.promise
            .then((wrapper) => wrapper.dispose())
            // NOOP: It's disposed so nobody cares about the error
            .catch(NOOP);
            .catch(noop);
        this.#initializer = undefined;
    }
}

export namespace TinyH264Decoder {
    export interface Options {
        /**
         * Optional render target canvas element or offscreen canvas.
         * If not provided, a new `<canvas>` (when DOM is available)
         * or a `OffscreenCanvas` will be created.
         */
        canvas?: HTMLCanvasElement | OffscreenCanvas | undefined;
    }
}
+12 −10
Original line number Diff line number Diff line
@@ -96,15 +96,6 @@ const VideoFrameCapturerPool =
    /* #__PURE__ */
    new Pool(() => new VideoFrameCapturer(), 4);

export interface WebCodecsVideoDecoderInit {
    /**
     * The video codec to decode
     */
    codec: ScrcpyVideoCodecId;

    renderer: WebCodecsVideoDecoderRenderer;
}

export class WebCodecsVideoDecoder implements ScrcpyVideoDecoder {
    static get isSupported() {
        return typeof globalThis.VideoDecoder !== "undefined";
@@ -164,7 +155,7 @@ export class WebCodecsVideoDecoder implements ScrcpyVideoDecoder {
    /**
     * Create a new WebCodecs video decoder.
     */
    constructor({ codec, renderer }: WebCodecsVideoDecoderInit) {
    constructor({ codec, renderer }: WebCodecsVideoDecoder.Options) {
        this.#codec = codec;

        this.#renderer = renderer;
@@ -303,3 +294,14 @@ export class WebCodecsVideoDecoder implements ScrcpyVideoDecoder {
        this.#captureFrame?.close();
    }
}

export namespace WebCodecsVideoDecoder {
    export interface Options {
        /**
         * The video codec to decode
         */
        codec: ScrcpyVideoCodecId;

        renderer: WebCodecsVideoDecoderRenderer;
    }
}
Loading