\hypertarget{group__Ecore__Evas__Extn}{}\doxysection{External plug/socket infrastructure for remote canvases}
\label{group__Ecore__Evas__Extn}\index{External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}}


These functions allow 1 process to create a \char`\"{}socket\char`\"{} was pluged into which another process can create a \char`\"{}plug\char`\"{} remotely to plug into.  


\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
EAPI Ecore\+\_\+\+Evas $\ast$ \mbox{\hyperlink{group__Ecore__Evas__Extn_ga4024b9f6841aaf53aed7037f567a2777}{ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+new}} (int w, int h)
\begin{DoxyCompactList}\small\item\em Creates a new Ecore\+\_\+\+Evas canvas for the new external ecore evas socket. \end{DoxyCompactList}\item 
EAPI \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Ecore__Evas__Extn_ga94c78c852b665dc802212230afa40da8}{ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+listen}} (Ecore\+\_\+\+Evas $\ast$ee, const char $\ast$svcname, int svcnum, \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} svcsys)
\begin{DoxyCompactList}\small\item\em Creates a socket to provide the service for external ecore evas socket. \end{DoxyCompactList}\item 
EAPI void \mbox{\hyperlink{group__Ecore__Evas__Extn_ga5da04eeeffd27e0456330fe7c88b2649}{ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+events\+\_\+block\+\_\+set}} (Ecore\+\_\+\+Evas $\ast$ee, \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} events\+\_\+block)
\begin{DoxyCompactList}\small\item\em Sets the blocking about mouse events to Ecore Evas. \end{DoxyCompactList}\item 
EAPI \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Ecore__Evas__Extn_ga102cf94f8a2369d380e13521dc0dfb58}{ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+events\+\_\+block\+\_\+get}} (Ecore\+\_\+\+Evas $\ast$ee)
\begin{DoxyCompactList}\small\item\em Gets the blocking about mouse events to Ecore Evas. \end{DoxyCompactList}\item 
EAPI void \mbox{\hyperlink{group__Ecore__Evas__Extn_gaaf6d5316e44af48d94a164d6f13060e5}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+object\+\_\+data\+\_\+lock}} (\mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object}} $\ast$obj)
\begin{DoxyCompactList}\small\item\em Locks the pixel data so the socket cannot change it. \end{DoxyCompactList}\item 
EAPI void \mbox{\hyperlink{group__Ecore__Evas__Extn_ga3ffece9995b55f4ce6c1dba12abd89c3}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+object\+\_\+data\+\_\+unlock}} (\mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object}} $\ast$obj)
\begin{DoxyCompactList}\small\item\em Unlocks the pixel data so the socket can change it again. \end{DoxyCompactList}\item 
EAPI \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object}} $\ast$ \mbox{\hyperlink{group__Ecore__Evas__Extn_gad1214dfb75911576340c3b90654c5e3d}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+new}} (Ecore\+\_\+\+Evas $\ast$ee\+\_\+target)
\begin{DoxyCompactList}\small\item\em Creates a new external ecore evas plug. \end{DoxyCompactList}\item 
EAPI \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Ecore__Evas__Extn_ga3caa5c08f6342d7e48cbea30596ced89}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+connect}} (\mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object}} $\ast$obj, const char $\ast$svcname, int svcnum, \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} svcsys)
\begin{DoxyCompactList}\small\item\em Connects an external ecore evas plug to service provided by external ecore evas socket. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
EAPI int \mbox{\hyperlink{group__Ecore__Evas__Extn_ga6d5fd3e0ec72dec2c95245de88356bc1}{ECORE\+\_\+\+EVAS\+\_\+\+EXTN\+\_\+\+CLIENT\+\_\+\+ADD}}
\begin{DoxyCompactList}\small\item\em this event is received when a plug has connected to an extn socket \end{DoxyCompactList}\item 
EAPI int \mbox{\hyperlink{group__Ecore__Evas__Extn_ga8fb7ee60a44413172a9dca1305061cf7}{ECORE\+\_\+\+EVAS\+\_\+\+EXTN\+\_\+\+CLIENT\+\_\+\+DEL}}
\begin{DoxyCompactList}\small\item\em this event is received when a plug has disconnected from an extn socket \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
These functions allow 1 process to create a \char`\"{}socket\char`\"{} was pluged into which another process can create a \char`\"{}plug\char`\"{} remotely to plug into. 

Socket can provide content for several plugs. This is best for small sized objects (about the size range of a small icon up to a few large icons). Since the plug is actually an image object, you can fetch the pixel data

\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}


\doxysubsection{Function Documentation}
\mbox{\Hypertarget{group__Ecore__Evas__Extn_ga4024b9f6841aaf53aed7037f567a2777}\label{group__Ecore__Evas__Extn_ga4024b9f6841aaf53aed7037f567a2777}} 
\index{External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}!ecore\_evas\_extn\_socket\_new@{ecore\_evas\_extn\_socket\_new}}
\index{ecore\_evas\_extn\_socket\_new@{ecore\_evas\_extn\_socket\_new}!External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}}
\doxysubsubsection{\texorpdfstring{ecore\_evas\_extn\_socket\_new()}{ecore\_evas\_extn\_socket\_new()}}
{\footnotesize\ttfamily EAPI Ecore\+\_\+\+Evas $\ast$ ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+new (\begin{DoxyParamCaption}\item[{int}]{w,  }\item[{int}]{h }\end{DoxyParamCaption})}



Creates a new Ecore\+\_\+\+Evas canvas for the new external ecore evas socket. 


\begin{DoxyParams}{Parameters}
{\em w} & The width of the canvas, in pixels \\
\hline
{\em h} & The height of the canvas, in pixels \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A new {\ttfamily Ecore\+\_\+\+Evas} instance, or {\ttfamily NULL} on failure
\end{DoxyReturn}
This creates a new extn\+\_\+socket canvas wrapper, with image data array {\bfseries{bound}} to the ARGB format, 8 bits per pixel.

If creation is successful, an Ecore\+\_\+\+Evas handle is returned or {\ttfamily NULL} if creation fails. Also focus, show, hide etc. callbacks will also be called if the plug object is shown, or already visible on connect, or if it is hidden later, focused or unfocused.

This function has to be followed by \mbox{\hyperlink{group__Ecore__Evas__Extn_ga94c78c852b665dc802212230afa40da8}{ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+listen()}}, for starting ecore ipc service.


\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}}\ res\ =\ \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}};}
\DoxyCodeLine{Ecore\_Evas\ *ee\ =\ \mbox{\hyperlink{group__Ecore__Evas__Extn_ga4024b9f6841aaf53aed7037f567a2777}{ecore\_evas\_extn\_socket\_new}}(1,\ 1);}
\DoxyCodeLine{}
\DoxyCodeLine{res\ =\ \mbox{\hyperlink{group__Ecore__Evas__Extn_ga94c78c852b665dc802212230afa40da8}{ecore\_evas\_extn\_socket\_listen}}(\textcolor{stringliteral}{"{}svcname"{}},\ 1,\ \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}});}
\DoxyCodeLine{\textcolor{keywordflow}{if}\ (!res)\ \textcolor{keywordflow}{return};}
\DoxyCodeLine{\mbox{\hyperlink{group__Ecore__Evas__Group_ga3109b574eca21cd8b57a749c362dba3e}{ecore\_evas\_resize}}(ee,\ 240,\ 400);}

\end{DoxyCode}


or


\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}}\ res\ =\ \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}};}
\DoxyCodeLine{Ecore\_Evas\ *ee\ =\ \mbox{\hyperlink{group__Ecore__Evas__Extn_ga4024b9f6841aaf53aed7037f567a2777}{ecore\_evas\_extn\_socket\_new}}(240,\ 400);}
\DoxyCodeLine{}
\DoxyCodeLine{res\ =\ \mbox{\hyperlink{group__Ecore__Evas__Extn_ga94c78c852b665dc802212230afa40da8}{ecore\_evas\_extn\_socket\_listen}}(\textcolor{stringliteral}{"{}svcname"{}},\ 1,\ \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}});}
\DoxyCodeLine{\textcolor{keywordflow}{if}\ (!res)\ \textcolor{keywordflow}{return};}

\end{DoxyCode}


When a client(plug) connects, you will get the ECORE\+\_\+\+EVAS\+\_\+\+EXTN\+\_\+\+CLIENT\+\_\+\+ADD event in the ecore event queue, with event\+\_\+info being the image object pointer passed as a void pointer. When a client disconnects you will get the ECORE\+\_\+\+EVAS\+\_\+\+EXTN\+\_\+\+CLIENT\+\_\+\+DEL event.

You can set up event handles for these events as follows\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{static}\ \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}}\ client\_add\_cb(\textcolor{keywordtype}{void}\ *data,\ \textcolor{keywordtype}{int}\ event,\ \textcolor{keywordtype}{void}\ *event\_info)}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ Ecore\_Evas\ *ee\ =\ event\_info;}
\DoxyCodeLine{\ \ \ printf(\textcolor{stringliteral}{"{}client\ is\ connected\ to\ external\ socket\ \%p\(\backslash\)n"{}},\ ee);}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group__Ecore__Main__Loop__Group_ga6a2922b8aa10c60f27c8ab49d84d75f2}{ECORE\_CALLBACK\_PASS\_ON}};}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static}\ \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}}\ client\_del\_cb(\textcolor{keywordtype}{void}\ *data,\ \textcolor{keywordtype}{int}\ event,\ \textcolor{keywordtype}{void}\ *event\_info)}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ Ecore\_Evas\ *ee\ =\ event\_info;}
\DoxyCodeLine{\ \ \ printf(\textcolor{stringliteral}{"{}client\ is\ disconnected\ from\ external\ socket\ \%p\(\backslash\)n"{}},\ ee);}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group__Ecore__Main__Loop__Group_ga6a2922b8aa10c60f27c8ab49d84d75f2}{ECORE\_CALLBACK\_PASS\_ON}};}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keywordtype}{void}\ setup(\textcolor{keywordtype}{void})}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Event__Group_ga886c90c3f917f87b3b4c931adcbc41c5}{ecore\_event\_handler\_add}}(\mbox{\hyperlink{group__Ecore__Evas__Extn_ga6d5fd3e0ec72dec2c95245de88356bc1}{ECORE\_EVAS\_EXTN\_CLIENT\_ADD}},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ client\_add\_cb,\ NULL);}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Ecore__Event__Group_ga886c90c3f917f87b3b4c931adcbc41c5}{ecore\_event\_handler\_add}}(\mbox{\hyperlink{group__Ecore__Evas__Extn_ga8fb7ee60a44413172a9dca1305061cf7}{ECORE\_EVAS\_EXTN\_CLIENT\_DEL}},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ client\_del\_cb,\ NULL);}
\DoxyCodeLine{\}}

\end{DoxyCode}


Note that events come in later after the event happened. You may want to be careful as data structures you had associated with the image object may have been freed after deletion, but the object may still be around awaiting cleanup and thus still be valid.\+You can change the size with something like\+:

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Ecore__Evas__Extn_ga94c78c852b665dc802212230afa40da8}{ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+listen()}} 

\mbox{\hyperlink{group__Ecore__Evas__Extn_gad1214dfb75911576340c3b90654c5e3d}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+new()}} 

\mbox{\hyperlink{group__Ecore__Evas__Extn_gaaf6d5316e44af48d94a164d6f13060e5}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+object\+\_\+data\+\_\+lock()}} 

\mbox{\hyperlink{group__Ecore__Evas__Extn_ga3ffece9995b55f4ce6c1dba12abd89c3}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+object\+\_\+data\+\_\+unlock()}}
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}


References \mbox{\hyperlink{group__Ecore__Evas__Group_gad3ec61f2aa03df4d3dbfd0d311e0c8dc}{ecore\+\_\+evas\+\_\+free()}}, \mbox{\hyperlink{group__Eina__Module__Group_ga5d6ab8365f41bb80300607c88b25dbc4}{eina\+\_\+module\+\_\+symbol\+\_\+get()}}, and \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}.

\mbox{\Hypertarget{group__Ecore__Evas__Extn_ga94c78c852b665dc802212230afa40da8}\label{group__Ecore__Evas__Extn_ga94c78c852b665dc802212230afa40da8}} 
\index{External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}!ecore\_evas\_extn\_socket\_listen@{ecore\_evas\_extn\_socket\_listen}}
\index{ecore\_evas\_extn\_socket\_listen@{ecore\_evas\_extn\_socket\_listen}!External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}}
\doxysubsubsection{\texorpdfstring{ecore\_evas\_extn\_socket\_listen()}{ecore\_evas\_extn\_socket\_listen()}}
{\footnotesize\ttfamily EAPI \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+listen (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Evas $\ast$}]{ee,  }\item[{const char $\ast$}]{svcname,  }\item[{int}]{svcnum,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}}]{svcsys }\end{DoxyParamCaption})}



Creates a socket to provide the service for external ecore evas socket. 


\begin{DoxyParams}{Parameters}
{\em ee} & The Ecore\+\_\+\+Evas. \\
\hline
{\em svcname} & The name of the service to be advertised. ensure that it is unique (when combined with {\ttfamily svcnum}) otherwise creation may fail. \\
\hline
{\em svcnum} & A number (any value, {\ttfamily 0} being the common default) to differentiate multiple instances of services with the same name. \\
\hline
{\em svcsys} & A boolean that if true, specifies to create a system-\/wide service all users can connect to, otherwise the service is private to the user ide that created the service. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily EINA\+\_\+\+TRUE} if creation is successful, {\ttfamily EINA\+\_\+\+FALSE} if it does not.
\end{DoxyReturn}
This creates socket specified by {\ttfamily svcname}, {\ttfamily svcnum} and {\ttfamily svcsys}. If creation is successful, {\ttfamily EINA\+\_\+\+TRUE} is returned or {\ttfamily EINA\+\_\+\+FALSE} if creation fails.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Ecore__Evas__Extn_ga4024b9f6841aaf53aed7037f567a2777}{ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+new()}} 

\mbox{\hyperlink{group__Ecore__Evas__Extn_gad1214dfb75911576340c3b90654c5e3d}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+new()}} 

\mbox{\hyperlink{group__Ecore__Evas__Extn_gaaf6d5316e44af48d94a164d6f13060e5}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+object\+\_\+data\+\_\+lock()}} 

\mbox{\hyperlink{group__Ecore__Evas__Extn_ga3ffece9995b55f4ce6c1dba12abd89c3}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+object\+\_\+data\+\_\+unlock()}}
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}


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

\mbox{\Hypertarget{group__Ecore__Evas__Extn_ga5da04eeeffd27e0456330fe7c88b2649}\label{group__Ecore__Evas__Extn_ga5da04eeeffd27e0456330fe7c88b2649}} 
\index{External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}!ecore\_evas\_extn\_socket\_events\_block\_set@{ecore\_evas\_extn\_socket\_events\_block\_set}}
\index{ecore\_evas\_extn\_socket\_events\_block\_set@{ecore\_evas\_extn\_socket\_events\_block\_set}!External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}}
\doxysubsubsection{\texorpdfstring{ecore\_evas\_extn\_socket\_events\_block\_set()}{ecore\_evas\_extn\_socket\_events\_block\_set()}}
{\footnotesize\ttfamily EAPI void ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+events\+\_\+block\+\_\+set (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Evas $\ast$}]{ee,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}}]{events\+\_\+block }\end{DoxyParamCaption})}



Sets the blocking about mouse events to Ecore Evas. 


\begin{DoxyParams}{Parameters}
{\em ee} & The Ecore\+\_\+\+Evas. \\
\hline
{\em events\+\_\+block} & The blocking about mouse events.\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Ecore__Evas__Extn_ga102cf94f8a2369d380e13521dc0dfb58}{ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+events\+\_\+block\+\_\+get()}}
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+15 
\end{DoxySince}


References \mbox{\hyperlink{group__Eina__Module__Group_ga5d6ab8365f41bb80300607c88b25dbc4}{eina\+\_\+module\+\_\+symbol\+\_\+get()}}, and \mbox{\hyperlink{group__Eina__Safety__Checks__Group_ga1ccf8538d0015b3801ff642e6156843a}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN}}.

\mbox{\Hypertarget{group__Ecore__Evas__Extn_ga102cf94f8a2369d380e13521dc0dfb58}\label{group__Ecore__Evas__Extn_ga102cf94f8a2369d380e13521dc0dfb58}} 
\index{External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}!ecore\_evas\_extn\_socket\_events\_block\_get@{ecore\_evas\_extn\_socket\_events\_block\_get}}
\index{ecore\_evas\_extn\_socket\_events\_block\_get@{ecore\_evas\_extn\_socket\_events\_block\_get}!External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}}
\doxysubsubsection{\texorpdfstring{ecore\_evas\_extn\_socket\_events\_block\_get()}{ecore\_evas\_extn\_socket\_events\_block\_get()}}
{\footnotesize\ttfamily EAPI \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+events\+\_\+block\+\_\+get (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Evas $\ast$}]{ee }\end{DoxyParamCaption})}



Gets the blocking about mouse events to Ecore Evas. 


\begin{DoxyParams}{Parameters}
{\em ee} & The Ecore\+\_\+\+Evas. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The blocking about mouse events.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Ecore__Evas__Extn_ga5da04eeeffd27e0456330fe7c88b2649}{ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+events\+\_\+block\+\_\+set()}}
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+15 
\end{DoxySince}


References \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}, \mbox{\hyperlink{group__Eina__Module__Group_ga5d6ab8365f41bb80300607c88b25dbc4}{eina\+\_\+module\+\_\+symbol\+\_\+get()}}, and \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}.

\mbox{\Hypertarget{group__Ecore__Evas__Extn_gaaf6d5316e44af48d94a164d6f13060e5}\label{group__Ecore__Evas__Extn_gaaf6d5316e44af48d94a164d6f13060e5}} 
\index{External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}!ecore\_evas\_extn\_plug\_object\_data\_lock@{ecore\_evas\_extn\_plug\_object\_data\_lock}}
\index{ecore\_evas\_extn\_plug\_object\_data\_lock@{ecore\_evas\_extn\_plug\_object\_data\_lock}!External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}}
\doxysubsubsection{\texorpdfstring{ecore\_evas\_extn\_plug\_object\_data\_lock()}{ecore\_evas\_extn\_plug\_object\_data\_lock()}}
{\footnotesize\ttfamily EAPI void ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+object\+\_\+data\+\_\+lock (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object}} $\ast$}]{obj }\end{DoxyParamCaption})}



Locks the pixel data so the socket cannot change it. 


\begin{DoxyParams}{Parameters}
{\em obj} & The image object returned by \mbox{\hyperlink{group__Ecore__Evas__Extn_gad1214dfb75911576340c3b90654c5e3d}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+new()}} to lock\\
\hline
\end{DoxyParams}
You may need to get the image pixel data with \mbox{\hyperlink{group__Evas__Image_ga34952d1934aeed3b2f6bbc5f9c82e6cd}{evas\+\_\+object\+\_\+image\+\_\+data\+\_\+get()}} from the image object, but need to ensure that it does not change while you are using the data. This function lets you set an advisory lock on the image data so the external plug process will not render to it or alter it.

You should only hold the lock for just as long as you need to read out the image data or otherwise deal with it, and then unlock it with \mbox{\hyperlink{group__Ecore__Evas__Extn_ga3ffece9995b55f4ce6c1dba12abd89c3}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+object\+\_\+data\+\_\+unlock()}}. Keeping a lock over more than 1 iteration of the main ecore loop will be problematic, so avoid it. Also forgetting to unlock may cause the socket process to freeze and thus create odd behaviors.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Ecore__Evas__Extn_gad1214dfb75911576340c3b90654c5e3d}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+new()}} 

\mbox{\hyperlink{group__Ecore__Evas__Extn_ga3ffece9995b55f4ce6c1dba12abd89c3}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+object\+\_\+data\+\_\+unlock()}}
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}


References \mbox{\hyperlink{group__Ecore__Evas__Group_gae8e0f84de093a975cac8f26b2cc4a7d5}{ecore\+\_\+evas\+\_\+object\+\_\+ecore\+\_\+evas\+\_\+get()}}, and \mbox{\hyperlink{group__Eina__Safety__Checks__Group_ga1ccf8538d0015b3801ff642e6156843a}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN}}.

\mbox{\Hypertarget{group__Ecore__Evas__Extn_ga3ffece9995b55f4ce6c1dba12abd89c3}\label{group__Ecore__Evas__Extn_ga3ffece9995b55f4ce6c1dba12abd89c3}} 
\index{External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}!ecore\_evas\_extn\_plug\_object\_data\_unlock@{ecore\_evas\_extn\_plug\_object\_data\_unlock}}
\index{ecore\_evas\_extn\_plug\_object\_data\_unlock@{ecore\_evas\_extn\_plug\_object\_data\_unlock}!External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}}
\doxysubsubsection{\texorpdfstring{ecore\_evas\_extn\_plug\_object\_data\_unlock()}{ecore\_evas\_extn\_plug\_object\_data\_unlock()}}
{\footnotesize\ttfamily EAPI void ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+object\+\_\+data\+\_\+unlock (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object}} $\ast$}]{obj }\end{DoxyParamCaption})}



Unlocks the pixel data so the socket can change it again. 


\begin{DoxyParams}{Parameters}
{\em obj} & The image object returned by \mbox{\hyperlink{group__Ecore__Evas__Extn_gad1214dfb75911576340c3b90654c5e3d}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+new()}} to unlock\\
\hline
\end{DoxyParams}
This unlocks after an advisor lock has been taken by \mbox{\hyperlink{group__Ecore__Evas__Extn_gaaf6d5316e44af48d94a164d6f13060e5}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+object\+\_\+data\+\_\+lock()}}.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Ecore__Evas__Extn_gad1214dfb75911576340c3b90654c5e3d}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+new()}} 

\mbox{\hyperlink{group__Ecore__Evas__Extn_gaaf6d5316e44af48d94a164d6f13060e5}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+object\+\_\+data\+\_\+lock()}}
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}


References \mbox{\hyperlink{group__Ecore__Evas__Group_gae8e0f84de093a975cac8f26b2cc4a7d5}{ecore\+\_\+evas\+\_\+object\+\_\+ecore\+\_\+evas\+\_\+get()}}, and \mbox{\hyperlink{group__Eina__Safety__Checks__Group_ga1ccf8538d0015b3801ff642e6156843a}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN}}.

\mbox{\Hypertarget{group__Ecore__Evas__Extn_gad1214dfb75911576340c3b90654c5e3d}\label{group__Ecore__Evas__Extn_gad1214dfb75911576340c3b90654c5e3d}} 
\index{External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}!ecore\_evas\_extn\_plug\_new@{ecore\_evas\_extn\_plug\_new}}
\index{ecore\_evas\_extn\_plug\_new@{ecore\_evas\_extn\_plug\_new}!External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}}
\doxysubsubsection{\texorpdfstring{ecore\_evas\_extn\_plug\_new()}{ecore\_evas\_extn\_plug\_new()}}
{\footnotesize\ttfamily EAPI \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object}} $\ast$ ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+new (\begin{DoxyParamCaption}\item[{Ecore\+\_\+\+Evas $\ast$}]{ee\+\_\+target }\end{DoxyParamCaption})}



Creates a new external ecore evas plug. 


\begin{DoxyParams}{Parameters}
{\em ee\+\_\+target} & The Ecore\+\_\+\+Evas containing the canvas in which the new image object will live. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
An evas image object that will contain the image output of a socket.
\end{DoxyReturn}
This creates an image object that will contain the output of another processes socket canvas when it connects. All input will be sent back to this process as well, effectively swallowing or placing the socket process in the canvas of the plug process in place of the image object. The image object by default is created to be filled (equivalent of \mbox{\hyperlink{group__Evas__Object__Image_gafb52be265f315186a28d43af2d559ec6}{evas\+\_\+object\+\_\+image\+\_\+filled\+\_\+add()}} on creation) so image content will scale to fill the image unless otherwise reconfigured. The Ecore\+\_\+\+Evas size of the plug is the master size and determines size in pixels of the plug canvas. You can change the size with something like\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}}\ res\ =\ \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}};}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}}\ *obj\ =\ \mbox{\hyperlink{group__Ecore__Evas__Extn_gad1214dfb75911576340c3b90654c5e3d}{ecore\_evas\_extn\_plug\_new}}(ee);}
\DoxyCodeLine{}
\DoxyCodeLine{res\ =\ \mbox{\hyperlink{group__Ecore__Evas__Extn_ga3caa5c08f6342d7e48cbea30596ced89}{ecore\_evas\_extn\_plug\_connect}}(\textcolor{stringliteral}{"{}svcname"{}},\ 1,\ \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}});}
\DoxyCodeLine{\textcolor{keywordflow}{if}\ (!res)\ \textcolor{keywordflow}{return};}
\DoxyCodeLine{\mbox{\hyperlink{group__Ecore__Evas__Group_ga3109b574eca21cd8b57a749c362dba3e}{ecore\_evas\_resize}}(ee,\ 240,\ 400);}

\end{DoxyCode}


\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Ecore__Evas__Extn_ga4024b9f6841aaf53aed7037f567a2777}{ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+new()}} 

\mbox{\hyperlink{group__Ecore__Evas__Extn_ga3caa5c08f6342d7e48cbea30596ced89}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+connect()}} 
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}


References \mbox{\hyperlink{group__Eina__Module__Group_ga5d6ab8365f41bb80300607c88b25dbc4}{eina\+\_\+module\+\_\+symbol\+\_\+get()}}, and \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}.

\mbox{\Hypertarget{group__Ecore__Evas__Extn_ga3caa5c08f6342d7e48cbea30596ced89}\label{group__Ecore__Evas__Extn_ga3caa5c08f6342d7e48cbea30596ced89}} 
\index{External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}!ecore\_evas\_extn\_plug\_connect@{ecore\_evas\_extn\_plug\_connect}}
\index{ecore\_evas\_extn\_plug\_connect@{ecore\_evas\_extn\_plug\_connect}!External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}}
\doxysubsubsection{\texorpdfstring{ecore\_evas\_extn\_plug\_connect()}{ecore\_evas\_extn\_plug\_connect()}}
{\footnotesize\ttfamily EAPI \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+connect (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object}} $\ast$}]{obj,  }\item[{const char $\ast$}]{svcname,  }\item[{int}]{svcnum,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}}]{svcsys }\end{DoxyParamCaption})}



Connects an external ecore evas plug to service provided by external ecore evas socket. 


\begin{DoxyParams}{Parameters}
{\em obj} & The Ecore\+\_\+\+Evas containing the canvas in which the new image object will live. \\
\hline
{\em svcname} & The service name to connect to set up by the socket. \\
\hline
{\em svcnum} & The service number to connect to (set up by socket). \\
\hline
{\em svcsys} & Boolean to set if the service is a system one or not (set up by socket). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily EINA\+\_\+\+TRUE} if creation is successful, {\ttfamily EINA\+\_\+\+FALSE} if it does not.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Ecore__Evas__Extn_gad1214dfb75911576340c3b90654c5e3d}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+new()}}
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}


References \mbox{\hyperlink{group__Ecore__Evas__Group_gae8e0f84de093a975cac8f26b2cc4a7d5}{ecore\+\_\+evas\+\_\+object\+\_\+ecore\+\_\+evas\+\_\+get()}}, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}, and \mbox{\hyperlink{group__Eina__Safety__Checks__Group_gab2b07061fc6500dedd9cd41c8d16f95d}{EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL}}.



\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{group__Ecore__Evas__Extn_ga6d5fd3e0ec72dec2c95245de88356bc1}\label{group__Ecore__Evas__Extn_ga6d5fd3e0ec72dec2c95245de88356bc1}} 
\index{External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}!ECORE\_EVAS\_EXTN\_CLIENT\_ADD@{ECORE\_EVAS\_EXTN\_CLIENT\_ADD}}
\index{ECORE\_EVAS\_EXTN\_CLIENT\_ADD@{ECORE\_EVAS\_EXTN\_CLIENT\_ADD}!External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}}
\doxysubsubsection{\texorpdfstring{ECORE\_EVAS\_EXTN\_CLIENT\_ADD}{ECORE\_EVAS\_EXTN\_CLIENT\_ADD}}
{\footnotesize\ttfamily EAPI int ECORE\+\_\+\+EVAS\+\_\+\+EXTN\+\_\+\+CLIENT\+\_\+\+ADD\hspace{0.3cm}{\ttfamily [extern]}}



this event is received when a plug has connected to an extn socket 

\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}
\mbox{\Hypertarget{group__Ecore__Evas__Extn_ga8fb7ee60a44413172a9dca1305061cf7}\label{group__Ecore__Evas__Extn_ga8fb7ee60a44413172a9dca1305061cf7}} 
\index{External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}!ECORE\_EVAS\_EXTN\_CLIENT\_DEL@{ECORE\_EVAS\_EXTN\_CLIENT\_DEL}}
\index{ECORE\_EVAS\_EXTN\_CLIENT\_DEL@{ECORE\_EVAS\_EXTN\_CLIENT\_DEL}!External plug/socket infrastructure for remote canvases@{External plug/socket infrastructure for remote canvases}}
\doxysubsubsection{\texorpdfstring{ECORE\_EVAS\_EXTN\_CLIENT\_DEL}{ECORE\_EVAS\_EXTN\_CLIENT\_DEL}}
{\footnotesize\ttfamily EAPI int ECORE\+\_\+\+EVAS\+\_\+\+EXTN\+\_\+\+CLIENT\+\_\+\+DEL\hspace{0.3cm}{\ttfamily [extern]}}



this event is received when a plug has disconnected from an extn socket 

\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}
