class XWindow implements DisplaySurface {

    @Override
    public ListenableFuture<Void> setInputFocus() {

        final int winId = getWindowId();
        final int time = this.xTime.getTime();

        return this.xExecutor.submit(new Runnable() {

            @Override
            public void run() {
                LOG.debug("[winId={}] set input focus.",
                        winId);
                xcb_set_input_focus(getConnectionRef(),
                        (short) XCB_INPUT_FOCUS_NONE,
                        winId,
                        time);
                xcb_flush(getConnectionRef());
            }
        },
                null);
    }

    @AssistedInject  XWindow(final XTime xTime,
            final XConnection xConnection,
            @Nonnull @Assisted final DisplaySurfaceHandle resourceHandle,
            @DisplayExecutor final ListeningExecutorService xExecutor);

}