\hypertarget{group__Ecore__Drm2__Fb__Group}{}\doxysection{Drm framebuffer functions}
\label{group__Ecore__Drm2__Fb__Group}\index{Drm framebuffer functions@{Drm framebuffer functions}}


Functions that deal with setup of framebuffers.  


\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
EAPI Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$ \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_ga72a7ba3a5cb45c37aa1e22e5e5ede22e}{ecore\+\_\+drm2\+\_\+fb\+\_\+create}} (Ecore\+\_\+\+Drm2\+\_\+\+Device $\ast$dev, int width, int height, int depth, int bpp, unsigned int format)
\begin{DoxyCompactList}\small\item\em Create a new framebuffer object. \end{DoxyCompactList}\item 
EAPI void $\ast$ \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_gac5d3a61fc6107dedd66c723ac5e740c6}{ecore\+\_\+drm2\+\_\+fb\+\_\+data\+\_\+get}} (Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$fb)
\begin{DoxyCompactList}\small\item\em Get a framebuffer\textquotesingle{}s mmap\textquotesingle{}d data. \end{DoxyCompactList}\item 
EAPI unsigned int \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_ga299c59febe9acdfcfd71f64e06f435f4}{ecore\+\_\+drm2\+\_\+fb\+\_\+size\+\_\+get}} (Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$fb)
\begin{DoxyCompactList}\small\item\em Get a framebuffer\textquotesingle{}s size. \end{DoxyCompactList}\item 
EAPI unsigned int \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_gab118797821bc554154c8a141769889f7}{ecore\+\_\+drm2\+\_\+fb\+\_\+stride\+\_\+get}} (Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$fb)
\begin{DoxyCompactList}\small\item\em Get a framebuffer\textquotesingle{}s stride. \end{DoxyCompactList}\item 
EAPI void \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_gafabe8f7edef512bffbd4f821ab18eda6}{ecore\+\_\+drm2\+\_\+fb\+\_\+dirty}} (Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$fb, \mbox{\hyperlink{group__Eina__Rectangle__Group_gad1f49db9be2cd747f458ebf4718b6228}{Eina\+\_\+\+Rectangle}} $\ast$rects, unsigned int count)
\begin{DoxyCompactList}\small\item\em Mark regions of a framebuffer as dirty. \end{DoxyCompactList}\item 
EAPI int \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_ga627dd307d8a2da67b1863a8f854785da}{ecore\+\_\+drm2\+\_\+fb\+\_\+flip}} (Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$fb, Ecore\+\_\+\+Drm2\+\_\+\+Output $\ast$output)
\begin{DoxyCompactList}\small\item\em Schedule a pageflip to the given Ecore\+\_\+\+Drm2\+\_\+\+Fb. \end{DoxyCompactList}\item 
EAPI \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_ga707e208b0864c680788b4d4a73c80340}{ecore\+\_\+drm2\+\_\+fb\+\_\+flip\+\_\+complete}} (Ecore\+\_\+\+Drm2\+\_\+\+Output $\ast$output)
\begin{DoxyCompactList}\small\item\em Must be called by a page flip handler when the flip completes. \end{DoxyCompactList}\item 
EAPI \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_ga50d08fd820118c75e1afba2a8ae0b4d3}{ecore\+\_\+drm2\+\_\+fb\+\_\+busy\+\_\+get}} (Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$fb)
\begin{DoxyCompactList}\small\item\em Return the Ecore\+\_\+\+Drm2\+\_\+\+Fb\textquotesingle{}s busy status. \end{DoxyCompactList}\item 
EAPI \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_gaae8f9d17c0db16fd00f238f9414b4c3a}{ecore\+\_\+drm2\+\_\+fb\+\_\+release}} (Ecore\+\_\+\+Drm2\+\_\+\+Output $\ast$o, \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} panic)
\begin{DoxyCompactList}\small\item\em Try to force a framebuffer release for an output. \end{DoxyCompactList}\item 
EAPI Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$ \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_ga396d2263ffeb465d0c4d30979701c157}{ecore\+\_\+drm2\+\_\+fb\+\_\+dmabuf\+\_\+import}} (Ecore\+\_\+\+Drm2\+\_\+\+Device $\ast$dev, int width, int height, int depth, int bpp, unsigned int format, unsigned int strides\mbox{[}4\mbox{]}, int dmabuf\+\_\+fd\mbox{[}4\mbox{]}, int dmabuf\+\_\+fd\+\_\+count)
\begin{DoxyCompactList}\small\item\em Import a dmabuf object as a Framebuffer. \end{DoxyCompactList}\item 
EAPI void \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_ga12994af9ef3b3647da4538f3bd634698}{ecore\+\_\+drm2\+\_\+fb\+\_\+discard}} (Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$fb)
\begin{DoxyCompactList}\small\item\em Discard a framebuffer object. \end{DoxyCompactList}\item 
EAPI void \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_ga8a6de8ee7e5c159ba92e4b12179d45ab}{ecore\+\_\+drm2\+\_\+fb\+\_\+status\+\_\+handler\+\_\+set}} (Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$fb, Ecore\+\_\+\+Drm2\+\_\+\+Fb\+\_\+\+Status\+\_\+\+Handler handler, void $\ast$data)
\begin{DoxyCompactList}\small\item\em Register a callback for buffer status updates. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Functions that deal with setup of framebuffers. 



\doxysubsection{Function Documentation}
\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_ga72a7ba3a5cb45c37aa1e22e5e5ede22e}\label{group__Ecore__Drm2__Fb__Group_ga72a7ba3a5cb45c37aa1e22e5e5ede22e}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\_drm2\_fb\_create@{ecore\_drm2\_fb\_create}}
\index{ecore\_drm2\_fb\_create@{ecore\_drm2\_fb\_create}!Drm framebuffer functions@{Drm framebuffer functions}}
\doxysubsubsection{\texorpdfstring{ecore\_drm2\_fb\_create()}{ecore\_drm2\_fb\_create()}}
{\footnotesize\ttfamily EAPI Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$ ecore\+\_\+drm2\+\_\+fb\+\_\+create (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Device $\ast$}]{dev,  }\item[{int}]{width,  }\item[{int}]{height,  }\item[{int}]{depth,  }\item[{int}]{bpp,  }\item[{unsigned int}]{format }\end{DoxyParamCaption})}



Create a new framebuffer object. 


\begin{DoxyParams}{Parameters}
{\em dev} & \\
\hline
{\em width} & \\
\hline
{\em height} & \\
\hline
{\em depth} & \\
\hline
{\em bpp} & \\
\hline
{\em format} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A newly create framebuffer object, or NULL on failure
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+18 
\end{DoxySince}


References \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}, \mbox{\hyperlink{evil__mman_8h_a57028962c2a7c0c802ca6613492f2ef3}{MAP\+\_\+\+SHARED}}, and \mbox{\hyperlink{evil__mman_8h_a2a79c8ceefb8fc25a940ae07a3d94429}{PROT\+\_\+\+WRITE}}.

\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_gac5d3a61fc6107dedd66c723ac5e740c6}\label{group__Ecore__Drm2__Fb__Group_gac5d3a61fc6107dedd66c723ac5e740c6}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\_drm2\_fb\_data\_get@{ecore\_drm2\_fb\_data\_get}}
\index{ecore\_drm2\_fb\_data\_get@{ecore\_drm2\_fb\_data\_get}!Drm framebuffer functions@{Drm framebuffer functions}}
\doxysubsubsection{\texorpdfstring{ecore\_drm2\_fb\_data\_get()}{ecore\_drm2\_fb\_data\_get()}}
{\footnotesize\ttfamily EAPI void $\ast$ ecore\+\_\+drm2\+\_\+fb\+\_\+data\+\_\+get (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$}]{fb }\end{DoxyParamCaption})}



Get a framebuffer\textquotesingle{}s mmap\textquotesingle{}d data. 


\begin{DoxyParams}{Parameters}
{\em fb} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The mmap\textquotesingle{}d area of the framebuffer or NULL on failure
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+18 
\end{DoxySince}


References \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}, and \mbox{\hyperlink{group__Eina__Safety__Checks__Group_ga1dbe0d7e3c6b10f4bd49a2a132d73269}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+TRUE\+\_\+\+RETURN\+\_\+\+VAL}}.

\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_ga299c59febe9acdfcfd71f64e06f435f4}\label{group__Ecore__Drm2__Fb__Group_ga299c59febe9acdfcfd71f64e06f435f4}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\_drm2\_fb\_size\_get@{ecore\_drm2\_fb\_size\_get}}
\index{ecore\_drm2\_fb\_size\_get@{ecore\_drm2\_fb\_size\_get}!Drm framebuffer functions@{Drm framebuffer functions}}
\doxysubsubsection{\texorpdfstring{ecore\_drm2\_fb\_size\_get()}{ecore\_drm2\_fb\_size\_get()}}
{\footnotesize\ttfamily EAPI unsigned int ecore\+\_\+drm2\+\_\+fb\+\_\+size\+\_\+get (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$}]{fb }\end{DoxyParamCaption})}



Get a framebuffer\textquotesingle{}s size. 


\begin{DoxyParams}{Parameters}
{\em fb} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
size of the framebuffers\textquotesingle{} mmap\textquotesingle{}d data or 0 on failure
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+18 
\end{DoxySince}


References \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}, and \mbox{\hyperlink{group__Eina__Safety__Checks__Group_ga1dbe0d7e3c6b10f4bd49a2a132d73269}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+TRUE\+\_\+\+RETURN\+\_\+\+VAL}}.

\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_gab118797821bc554154c8a141769889f7}\label{group__Ecore__Drm2__Fb__Group_gab118797821bc554154c8a141769889f7}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\_drm2\_fb\_stride\_get@{ecore\_drm2\_fb\_stride\_get}}
\index{ecore\_drm2\_fb\_stride\_get@{ecore\_drm2\_fb\_stride\_get}!Drm framebuffer functions@{Drm framebuffer functions}}
\doxysubsubsection{\texorpdfstring{ecore\_drm2\_fb\_stride\_get()}{ecore\_drm2\_fb\_stride\_get()}}
{\footnotesize\ttfamily EAPI unsigned int ecore\+\_\+drm2\+\_\+fb\+\_\+stride\+\_\+get (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$}]{fb }\end{DoxyParamCaption})}



Get a framebuffer\textquotesingle{}s stride. 


\begin{DoxyParams}{Parameters}
{\em fb} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
stride of the framebuffer or 0 on failure
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+18 
\end{DoxySince}


References \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}, and \mbox{\hyperlink{group__Eina__Safety__Checks__Group_ga1dbe0d7e3c6b10f4bd49a2a132d73269}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+TRUE\+\_\+\+RETURN\+\_\+\+VAL}}.

\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_gafabe8f7edef512bffbd4f821ab18eda6}\label{group__Ecore__Drm2__Fb__Group_gafabe8f7edef512bffbd4f821ab18eda6}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\_drm2\_fb\_dirty@{ecore\_drm2\_fb\_dirty}}
\index{ecore\_drm2\_fb\_dirty@{ecore\_drm2\_fb\_dirty}!Drm framebuffer functions@{Drm framebuffer functions}}
\doxysubsubsection{\texorpdfstring{ecore\_drm2\_fb\_dirty()}{ecore\_drm2\_fb\_dirty()}}
{\footnotesize\ttfamily EAPI void ecore\+\_\+drm2\+\_\+fb\+\_\+dirty (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$}]{fb,  }\item[{\mbox{\hyperlink{group__Eina__Rectangle__Group_gad1f49db9be2cd747f458ebf4718b6228}{Eina\+\_\+\+Rectangle}} $\ast$}]{rects,  }\item[{unsigned int}]{count }\end{DoxyParamCaption})}



Mark regions of a framebuffer as dirty. 


\begin{DoxyParams}{Parameters}
{\em fb} & \\
\hline
{\em rects} & \\
\hline
{\em count} & \\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+18 
\end{DoxySince}


References \mbox{\hyperlink{eina__alloca_8h_ae13861224cb6597c3171a910683cb5fc}{alloca()}}, \mbox{\hyperlink{group__Eina__Safety__Checks__Group_ga1ccf8538d0015b3801ff642e6156843a}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN}}, \mbox{\hyperlink{group__Eina__Safety__Checks__Group_ga8b89fd35e22beece51443e29fe585935}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+TRUE\+\_\+\+RETURN}}, \mbox{\hyperlink{struct__Eina__Rectangle_a7570ed17f58fc94be997414a86130074}{\+\_\+\+Eina\+\_\+\+Rectangle\+::h}}, \mbox{\hyperlink{struct__Eina__Rectangle_af6a92d51ec25ee3464c81297ffc3a330}{\+\_\+\+Eina\+\_\+\+Rectangle\+::w}}, \mbox{\hyperlink{struct__Eina__Rectangle_a8358c0791dcf476432687510ca4e5d5c}{\+\_\+\+Eina\+\_\+\+Rectangle\+::x}}, and \mbox{\hyperlink{struct__Eina__Rectangle_ae74dc834fb71a1f4cd9e3fe11dec3940}{\+\_\+\+Eina\+\_\+\+Rectangle\+::y}}.

\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_ga627dd307d8a2da67b1863a8f854785da}\label{group__Ecore__Drm2__Fb__Group_ga627dd307d8a2da67b1863a8f854785da}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\_drm2\_fb\_flip@{ecore\_drm2\_fb\_flip}}
\index{ecore\_drm2\_fb\_flip@{ecore\_drm2\_fb\_flip}!Drm framebuffer functions@{Drm framebuffer functions}}
\doxysubsubsection{\texorpdfstring{ecore\_drm2\_fb\_flip()}{ecore\_drm2\_fb\_flip()}}
{\footnotesize\ttfamily EAPI int ecore\+\_\+drm2\+\_\+fb\+\_\+flip (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$}]{fb,  }\item[{Ecore\+\_\+\+Drm2\+\_\+\+Output $\ast$}]{output }\end{DoxyParamCaption})}



Schedule a pageflip to the given Ecore\+\_\+\+Drm2\+\_\+\+Fb. 

The caller is responsible for running a page flip handler and calling \mbox{\hyperlink{group__Ecore__Drm2__Fb__Group_ga707e208b0864c680788b4d4a73c80340}{ecore\+\_\+drm2\+\_\+fb\+\_\+flip\+\_\+complete()}} when it completes.


\begin{DoxyParams}{Parameters}
{\em fb} & \\
\hline
{\em output} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The result of drm\+Mode\+Page\+Flip function call
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+18 
\end{DoxySince}


References \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}.



Referenced by \mbox{\hyperlink{group__Ecore__Drm2__Output__Group_ga0740cebf9f1dc676888cf7be1efb1bf5}{ecore\+\_\+drm2\+\_\+output\+\_\+dpms\+\_\+set()}}, and \mbox{\hyperlink{group__Ecore__Drm2__Output__Group_ga204aaabd454598aa9b3aa1e71249aced}{ecore\+\_\+drm2\+\_\+output\+\_\+enabled\+\_\+set()}}.

\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_ga707e208b0864c680788b4d4a73c80340}\label{group__Ecore__Drm2__Fb__Group_ga707e208b0864c680788b4d4a73c80340}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\_drm2\_fb\_flip\_complete@{ecore\_drm2\_fb\_flip\_complete}}
\index{ecore\_drm2\_fb\_flip\_complete@{ecore\_drm2\_fb\_flip\_complete}!Drm framebuffer functions@{Drm framebuffer functions}}
\doxysubsubsection{\texorpdfstring{ecore\_drm2\_fb\_flip\_complete()}{ecore\_drm2\_fb\_flip\_complete()}}
{\footnotesize\ttfamily EAPI \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} ecore\+\_\+drm2\+\_\+fb\+\_\+flip\+\_\+complete (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Output $\ast$}]{output }\end{DoxyParamCaption})}



Must be called by a page flip handler when the flip completes. 


\begin{DoxyParams}{Parameters}
{\em output} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Whether there\textquotesingle{}s an undisplayed buffer still in the queue.
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+18 
\end{DoxySince}


References \mbox{\hyperlink{group__Ecore__Main__Loop__Group_ga12c98ccc13eb136ed62f8177d12a8fc0}{ecore\+\_\+main\+\_\+loop\+\_\+thread\+\_\+safe\+\_\+call\+\_\+async()}}, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}, \mbox{\hyperlink{group__Eina__List__Group_ga5b4d2aac696cd2558aaed03e3929d873}{EINA\+\_\+\+LIST\+\_\+\+FOREACH\+\_\+\+SAFE}}, \mbox{\hyperlink{group__Eina__List__Group_gae27a2c686a0a11693f9b06957c9bba83}{EINA\+\_\+\+LIST\+\_\+\+FREE}}, \mbox{\hyperlink{group__Eina__List__Group_gaf86ee0fd9fe0643ece301fc86f04e720}{eina\+\_\+list\+\_\+remove\+\_\+list()}}, \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}, and \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}}.

\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_ga50d08fd820118c75e1afba2a8ae0b4d3}\label{group__Ecore__Drm2__Fb__Group_ga50d08fd820118c75e1afba2a8ae0b4d3}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\_drm2\_fb\_busy\_get@{ecore\_drm2\_fb\_busy\_get}}
\index{ecore\_drm2\_fb\_busy\_get@{ecore\_drm2\_fb\_busy\_get}!Drm framebuffer functions@{Drm framebuffer functions}}
\doxysubsubsection{\texorpdfstring{ecore\_drm2\_fb\_busy\_get()}{ecore\_drm2\_fb\_busy\_get()}}
{\footnotesize\ttfamily EAPI \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} ecore\+\_\+drm2\+\_\+fb\+\_\+busy\+\_\+get (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$}]{fb }\end{DoxyParamCaption})}



Return the Ecore\+\_\+\+Drm2\+\_\+\+Fb\textquotesingle{}s busy status. 


\begin{DoxyParams}{Parameters}
{\em fb} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The busy status
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+19 
\end{DoxySince}


References \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}, \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}, and \mbox{\hyperlink{group__Eina__Safety__Checks__Group_ga1dbe0d7e3c6b10f4bd49a2a132d73269}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+TRUE\+\_\+\+RETURN\+\_\+\+VAL}}.

\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_gaae8f9d17c0db16fd00f238f9414b4c3a}\label{group__Ecore__Drm2__Fb__Group_gaae8f9d17c0db16fd00f238f9414b4c3a}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\_drm2\_fb\_release@{ecore\_drm2\_fb\_release}}
\index{ecore\_drm2\_fb\_release@{ecore\_drm2\_fb\_release}!Drm framebuffer functions@{Drm framebuffer functions}}
\doxysubsubsection{\texorpdfstring{ecore\_drm2\_fb\_release()}{ecore\_drm2\_fb\_release()}}
{\footnotesize\ttfamily EAPI \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} ecore\+\_\+drm2\+\_\+fb\+\_\+release (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Output $\ast$}]{o,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}}]{panic }\end{DoxyParamCaption})}



Try to force a framebuffer release for an output. 

This tries to release the next or optionally pending, or current buffer from the output. If successful there will be a release callback to the registered handler, and the fb will no longer be flagged busy.

Releasing buffers committed to scanout will potentially cause flicker, so this is only done when the panic flag is set.


\begin{DoxyParams}{Parameters}
{\em o} & The output to force release \\
\hline
{\em panic} & Try to release even buffers committed to scanout\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
EINA\+\_\+\+TRUE if a buffer was released
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+19 
\end{DoxySince}


References \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}, \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}, and \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}}.

\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_ga396d2263ffeb465d0c4d30979701c157}\label{group__Ecore__Drm2__Fb__Group_ga396d2263ffeb465d0c4d30979701c157}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\_drm2\_fb\_dmabuf\_import@{ecore\_drm2\_fb\_dmabuf\_import}}
\index{ecore\_drm2\_fb\_dmabuf\_import@{ecore\_drm2\_fb\_dmabuf\_import}!Drm framebuffer functions@{Drm framebuffer functions}}
\doxysubsubsection{\texorpdfstring{ecore\_drm2\_fb\_dmabuf\_import()}{ecore\_drm2\_fb\_dmabuf\_import()}}
{\footnotesize\ttfamily EAPI Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$ ecore\+\_\+drm2\+\_\+fb\+\_\+dmabuf\+\_\+import (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Device $\ast$}]{dev,  }\item[{int}]{width,  }\item[{int}]{height,  }\item[{int}]{depth,  }\item[{int}]{bpp,  }\item[{unsigned int}]{format,  }\item[{unsigned int}]{strides\mbox{[}4\mbox{]},  }\item[{int}]{dmabuf\+\_\+fd\mbox{[}4\mbox{]},  }\item[{int}]{dmabuf\+\_\+fd\+\_\+count }\end{DoxyParamCaption})}



Import a dmabuf object as a Framebuffer. 


\begin{DoxyParams}{Parameters}
{\em dev} & \\
\hline
{\em width} & \\
\hline
{\em height} & \\
\hline
{\em depth} & \\
\hline
{\em bpp} & \\
\hline
{\em format} & \\
\hline
{\em strides} & \\
\hline
{\em dmabuf\+\_\+fd} & \\
\hline
{\em dmabuf\+\_\+fd\+\_\+count} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A newly created framebuffer object, or NULL on failure
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+20 
\end{DoxySince}


References \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}, and \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}}.

\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_ga12994af9ef3b3647da4538f3bd634698}\label{group__Ecore__Drm2__Fb__Group_ga12994af9ef3b3647da4538f3bd634698}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\_drm2\_fb\_discard@{ecore\_drm2\_fb\_discard}}
\index{ecore\_drm2\_fb\_discard@{ecore\_drm2\_fb\_discard}!Drm framebuffer functions@{Drm framebuffer functions}}
\doxysubsubsection{\texorpdfstring{ecore\_drm2\_fb\_discard()}{ecore\_drm2\_fb\_discard()}}
{\footnotesize\ttfamily EAPI void ecore\+\_\+drm2\+\_\+fb\+\_\+discard (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$}]{fb }\end{DoxyParamCaption})}



Discard a framebuffer object. 

Decreases the refcount on a fb object. It will be destroyed when it\textquotesingle{}s no longer attached to scanout or otherwise in use.


\begin{DoxyParams}{Parameters}
{\em fb} & \\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+20 
\end{DoxySince}


References \mbox{\hyperlink{group__Eina__Safety__Checks__Group_ga1ccf8538d0015b3801ff642e6156843a}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN}}, \mbox{\hyperlink{group__Eina__Safety__Checks__Group_ga8b89fd35e22beece51443e29fe585935}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+TRUE\+\_\+\+RETURN}}, and \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}}.

\mbox{\Hypertarget{group__Ecore__Drm2__Fb__Group_ga8a6de8ee7e5c159ba92e4b12179d45ab}\label{group__Ecore__Drm2__Fb__Group_ga8a6de8ee7e5c159ba92e4b12179d45ab}} 
\index{Drm framebuffer functions@{Drm framebuffer functions}!ecore\_drm2\_fb\_status\_handler\_set@{ecore\_drm2\_fb\_status\_handler\_set}}
\index{ecore\_drm2\_fb\_status\_handler\_set@{ecore\_drm2\_fb\_status\_handler\_set}!Drm framebuffer functions@{Drm framebuffer functions}}
\doxysubsubsection{\texorpdfstring{ecore\_drm2\_fb\_status\_handler\_set()}{ecore\_drm2\_fb\_status\_handler\_set()}}
{\footnotesize\ttfamily EAPI void ecore\+\_\+drm2\+\_\+fb\+\_\+status\+\_\+handler\+\_\+set (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Drm2\+\_\+\+Fb $\ast$}]{fb,  }\item[{Ecore\+\_\+\+Drm2\+\_\+\+Fb\+\_\+\+Status\+\_\+\+Handler}]{handler,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})}



Register a callback for buffer status updates. 

When a flip completes ecore\+\_\+drm2 may release a buffer. Use this callback if you need to do bookkeeping or locking on buffer release.

Additionally, an fb may be placed on scanout or removed from scanout by evas. When this happens a compositor needs to ensure the buffers aren\textquotesingle{}t released back to a client while they\textquotesingle{}re on scanout.


\begin{DoxyParams}{Parameters}
{\em fb} & The fb to register the callback on \\
\hline
{\em handler} & The function to handle the callback \\
\hline
{\em data} & The user data to pass to the callback\\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+20 
\end{DoxySince}
