61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/*
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * Copyright © 2013 Keith Packard
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync *
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * Permission to use, copy, modify, distribute, and sell this software and its
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * documentation for any purpose is hereby granted without fee, provided that
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * the above copyright notice appear in all copies and that both that copyright
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * notice and this permission notice appear in supporting documentation, and
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * that the name of the copyright holders not be used in advertising or
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * publicity pertaining to distribution of the software without specific,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * written prior permission. The copyright holders make no representations
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * about the suitability of this software for any purpose. It is provided "as
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * is" without express or implied warranty.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync *
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * OF THIS SOFTWARE.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#ifndef _MISYNCFD_H_
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define _MISYNCFD_H_
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef int (*SyncScreenCreateFenceFromFdFunc) (ScreenPtr screen,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SyncFence *fence,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int fd,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Bool initially_triggered);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef int (*SyncScreenGetFenceFdFunc) (ScreenPtr screen,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SyncFence *fence);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define SYNC_FD_SCREEN_FUNCS_VERSION 1
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct _syncFdScreenFuncs {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int version;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SyncScreenCreateFenceFromFdFunc CreateFenceFromFd;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SyncScreenGetFenceFdFunc GetFenceFd;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} SyncFdScreenFuncsRec, *SyncFdScreenFuncsPtr;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern _X_EXPORT Bool miSyncFdScreenInit(ScreenPtr pScreen,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const SyncFdScreenFuncsRec *funcs);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif /* _MISYNCFD_H_ */