\hypertarget{group__Ecore__Evas__Extn}{\section{External plug/socket infrastructure to remote canvases}
\label{group__Ecore__Evas__Extn}\index{External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to 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.  


\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} Ecore\+\_\+\+Evas $\ast$ \hyperlink{group__Ecore__Evas__Extn_ga10badfd37601189db28de2a0cb5967b1}{ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+new} (int w, int h)
\begin{DoxyCompactList}\small\item\em Create a new Ecore\+\_\+\+Evas canvas for the new external ecore evas socket. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Ecore__Evas__Extn_ga94c78c852b665dc802212230afa40da8}{ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+listen} (Ecore\+\_\+\+Evas $\ast$ee, const char $\ast$svcname, int svcnum, \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} svcsys)
\begin{DoxyCompactList}\small\item\em Create a socket to provide the service for external ecore evas socket. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Ecore__Evas__Extn_gaaf6d5316e44af48d94a164d6f13060e5}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+object\+\_\+data\+\_\+lock} (\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object} $\ast$obj)
\begin{DoxyCompactList}\small\item\em Lock the pixel data so the socket cannot change it. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Ecore__Evas__Extn_ga3ffece9995b55f4ce6c1dba12abd89c3}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+object\+\_\+data\+\_\+unlock} (\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object} $\ast$obj)
\begin{DoxyCompactList}\small\item\em Unlock the pixel data so the socket can change it again. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object} $\ast$ \hyperlink{group__Ecore__Evas__Extn_gaf62e1bbe3e721303823025043ec4743c}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+new} (Ecore\+\_\+\+Evas $\ast$ee\+\_\+target)
\begin{DoxyCompactList}\small\item\em Create a new external ecore evas plug. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Ecore__Evas__Extn_ga3caa5c08f6342d7e48cbea30596ced89}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+connect} (\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object} $\ast$obj, const char $\ast$svcname, int svcnum, \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} svcsys)
\begin{DoxyCompactList}\small\item\em Connect an external ecore evas plug to service provided by external ecore evas socket. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__Ecore__Evas__Extn_gae70b6bb1242b645745b1dac196311866}{ecore\+\_\+evas\+\_\+pointer\+\_\+xy\+\_\+get} (const Ecore\+\_\+\+Evas $\ast$ee, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} $\ast$x, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} $\ast$y)
\begin{DoxyCompactList}\small\item\em Retrieve the coordinates of the mouse pointer. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Ecore__Evas__Extn_ga1febcd503cc924c5cd2339a5f6f1bd7e}{ecore\+\_\+evas\+\_\+pointer\+\_\+warp} (const Ecore\+\_\+\+Evas $\ast$ee, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} x, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} y)
\begin{DoxyCompactList}\small\item\em Retrieve the coordinates of the mouse pointer. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void $\ast$ \hyperlink{group__Ecore__Evas__Extn_ga3f85c3f97c8bead7bfd677f04903a3bd}{ecore\+\_\+evas\+\_\+pixmap\+\_\+visual\+\_\+get} (const Ecore\+\_\+\+Evas $\ast$ee)
\begin{DoxyCompactList}\small\item\em Retrieve the Visual used for pixmap creation. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} unsigned long \hyperlink{group__Ecore__Evas__Extn_ga2f24aa046034aac29ad7792d9fd9ff9e}{ecore\+\_\+evas\+\_\+pixmap\+\_\+colormap\+\_\+get} (const Ecore\+\_\+\+Evas $\ast$ee)
\begin{DoxyCompactList}\small\item\em Retrieve the Colormap used for pixmap creation. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int \hyperlink{group__Ecore__Evas__Extn_gabf21f1c7d93527a5bf7a0f63bbb86101}{ecore\+\_\+evas\+\_\+pixmap\+\_\+depth\+\_\+get} (const Ecore\+\_\+\+Evas $\ast$ee)
\begin{DoxyCompactList}\small\item\em Retrieve the depth used for pixmap creation. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int \hyperlink{group__Ecore__Evas__Extn_ga6d5fd3e0ec72dec2c95245de88356bc1}{E\+C\+O\+R\+E\+\_\+\+E\+V\+A\+S\+\_\+\+E\+X\+T\+N\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+A\+D\+D}
\begin{DoxyCompactList}\small\item\em this event is received when a plug has connected to an extn socket \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int \hyperlink{group__Ecore__Evas__Extn_ga8fb7ee60a44413172a9dca1305061cf7}{E\+C\+O\+R\+E\+\_\+\+E\+V\+A\+S\+\_\+\+E\+X\+T\+N\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+D\+E\+L}
\begin{DoxyCompactList}\small\item\em this event is received when a plug has disconnected from an extn socket \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{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 provides 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). Sine the plug is actually an image object, you can fetch the pixel data

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


\subsection{Function Documentation}
\hypertarget{group__Ecore__Evas__Extn_ga10badfd37601189db28de2a0cb5967b1}{\index{External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to 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 to remote canvases@{External plug/socket infrastructure to remote canvases}}
\subsubsection[{ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+new}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} Ecore\+\_\+\+Evas$\ast$ ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+new (
\begin{DoxyParamCaption}
\item[{int}]{w, }
\item[{int}]{h}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Evas__Extn_ga10badfd37601189db28de2a0cb5967b1}


Create 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 N\+U\+L\+L}, on failure
\end{DoxyReturn}
This creates a new extn\+\_\+socket canvas wrapper, with image data array {\bfseries bound} to the A\+R\+G\+B format, 8 bits per pixel.

If creation is successful, an Ecore\+\_\+\+Evas handle is returned or {\ttfamily N\+U\+L\+L} 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 flowed by \hyperlink{group__Ecore__Evas__Extn_ga94c78c852b665dc802212230afa40da8}{ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+listen()}, for starting ecore ipc service.


\begin{DoxyCode}
1 Eina\_Bool res = EINA\_FALSE;
2 Ecore\_Evas *ee = ecore\_evas\_extn\_socket\_new(1, 1);
3 
4 res = ecore\_evas\_extn\_socket\_listen("svcname", 1, EINA\_FALSE);
5 if (!res) return;
6 ecore\_evas\_resize(ee, 240, 400);
\end{DoxyCode}


or


\begin{DoxyCode}
1 Eina\_Bool res = EINA\_FALSE;
2 Ecore\_Evas *ee = ecore\_evas\_extn\_socket\_new(240, 400);
3 
4 res = ecore\_evas\_extn\_socket\_listen("svcname", 1, EINA\_FALSE);
5 if (!res) return;
\end{DoxyCode}


When a client(plug) connects, you will get the E\+C\+O\+R\+E\+\_\+\+E\+V\+A\+S\+\_\+\+E\+X\+T\+N\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+A\+D\+D 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 E\+C\+O\+R\+E\+\_\+\+E\+V\+A\+S\+\_\+\+E\+X\+T\+N\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+D\+E\+L event.

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


\begin{DoxyCode}
1 static Eina\_Bool client\_add\_cb(void *data, int event, void *event\_info)
2 \{
3    Ecore\_Evas *ee = event\_info;
4    printf("client is connected to external socket %p\(\backslash\)n", ee);
5    return ECORE\_CALLBACK\_PASS\_ON;
6 \}
7 
8 static Eina\_Bool client\_del\_cb(void *data, int event, void *event\_info)
9 \{
10    Ecore\_Evas *ee = event\_info;
11    printf("client is disconnected from external socket %p\(\backslash\)n", ee);
12    return ECORE\_CALLBACK\_PASS\_ON;
13 \}
14 
15 void setup(void)
16 \{
17    ecore\_event\_handler\_add(ECORE\_EVAS\_EXTN\_CLIENT\_ADD,
18                           client\_add\_cb, NULL);
19    ecore\_event\_handler\_add(ECORE\_EVAS\_EXTN\_CLIENT\_DEL,
20                           client\_del\_cb, NULL);
21 \}
\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 deleting, but the object may still be around awating cleanup and thus still be valid.\+You can change the size with something like\+:

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

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

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

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


References eina\+\_\+module\+\_\+symbol\+\_\+get().

\hypertarget{group__Ecore__Evas__Extn_ga94c78c852b665dc802212230afa40da8}{\index{External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to 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 to remote canvases@{External plug/socket infrastructure to remote canvases}}
\subsubsection[{ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+listen}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+listen (
\begin{DoxyParamCaption}
\item[{Ecore\+\_\+\+Evas $\ast$}]{ee, }
\item[{const char $\ast$}]{svcname, }
\item[{int}]{svcnum, }
\item[{{\bf Eina\+\_\+\+Bool}}]{svcsys}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Evas__Extn_ga94c78c852b665dc802212230afa40da8}


Create 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 E\+I\+N\+A\+\_\+\+T\+R\+U\+E} if creation is successful, {\ttfamily E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E} if it does not.
\end{DoxyReturn}
This creates socket specified by {\ttfamily svcname}, {\ttfamily svcnum} and {\ttfamily svcsys}. If creation is successful, {\ttfamily E\+I\+N\+A\+\_\+\+T\+R\+U\+E} is returned or {\ttfamily E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E} if creation fails.

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

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

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

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


References E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E.

\hypertarget{group__Ecore__Evas__Extn_gaaf6d5316e44af48d94a164d6f13060e5}{\index{External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to 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 to remote canvases@{External plug/socket infrastructure to remote canvases}}
\subsubsection[{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+object\+\_\+data\+\_\+lock}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+object\+\_\+data\+\_\+lock (
\begin{DoxyParamCaption}
\item[{{\bf Evas\+\_\+\+Object} $\ast$}]{obj}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Evas__Extn_gaaf6d5316e44af48d94a164d6f13060e5}


Lock the pixel data so the socket cannot change it. 


\begin{DoxyParams}{Parameters}
{\em obj} & The image object returned by \hyperlink{group__Ecore__Evas__Extn_gaf62e1bbe3e721303823025043ec4743c}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+new()} to lock\\
\hline
\end{DoxyParams}
You may need to get the image pixel data with 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 \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 behavior.

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

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


References ecore\+\_\+evas\+\_\+object\+\_\+ecore\+\_\+evas\+\_\+get().

\hypertarget{group__Ecore__Evas__Extn_ga3ffece9995b55f4ce6c1dba12abd89c3}{\index{External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to 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 to remote canvases@{External plug/socket infrastructure to remote canvases}}
\subsubsection[{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+object\+\_\+data\+\_\+unlock}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+object\+\_\+data\+\_\+unlock (
\begin{DoxyParamCaption}
\item[{{\bf Evas\+\_\+\+Object} $\ast$}]{obj}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Evas__Extn_ga3ffece9995b55f4ce6c1dba12abd89c3}


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


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

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

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


References ecore\+\_\+evas\+\_\+object\+\_\+ecore\+\_\+evas\+\_\+get().

\hypertarget{group__Ecore__Evas__Extn_gaf62e1bbe3e721303823025043ec4743c}{\index{External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to 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 to remote canvases@{External plug/socket infrastructure to remote canvases}}
\subsubsection[{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+new}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Evas\+\_\+\+Object}$\ast$ ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+new (
\begin{DoxyParamCaption}
\item[{Ecore\+\_\+\+Evas $\ast$}]{ee\+\_\+target}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Evas__Extn_gaf62e1bbe3e721303823025043ec4743c}


Create 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 \hyperlink{group__Evas__Object__Image_ga0e8cb83d31d02bf583c75925b7cd14d7}{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}
1 Eina\_Bool res = EINA\_FALSE;
2 Evas\_Object *obj = ecore\_evas\_extn\_plug\_new(ee);
3 
4 res = ecore\_evas\_extn\_plug\_connect("svcname", 1, EINA\_FALSE);
5 if (!res) return;
6 ecore\_evas\_resize(ee, 240, 400);
\end{DoxyCode}


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

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


References eina\+\_\+module\+\_\+symbol\+\_\+get().

\hypertarget{group__Ecore__Evas__Extn_ga3caa5c08f6342d7e48cbea30596ced89}{\index{External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to 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 to remote canvases@{External plug/socket infrastructure to remote canvases}}
\subsubsection[{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+connect}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+connect (
\begin{DoxyParamCaption}
\item[{{\bf Evas\+\_\+\+Object} $\ast$}]{obj, }
\item[{const char $\ast$}]{svcname, }
\item[{int}]{svcnum, }
\item[{{\bf Eina\+\_\+\+Bool}}]{svcsys}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Evas__Extn_ga3caa5c08f6342d7e48cbea30596ced89}


Connect 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 E\+I\+N\+A\+\_\+\+T\+R\+U\+E} if creation is successful, {\ttfamily E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E} if it does not.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Ecore__Evas__Extn_gaf62e1bbe3e721303823025043ec4743c}{ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+new()}
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}


References ecore\+\_\+evas\+\_\+object\+\_\+ecore\+\_\+evas\+\_\+get(), and E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E.

\hypertarget{group__Ecore__Evas__Extn_gae70b6bb1242b645745b1dac196311866}{\index{External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to remote canvases}!ecore\+\_\+evas\+\_\+pointer\+\_\+xy\+\_\+get@{ecore\+\_\+evas\+\_\+pointer\+\_\+xy\+\_\+get}}
\index{ecore\+\_\+evas\+\_\+pointer\+\_\+xy\+\_\+get@{ecore\+\_\+evas\+\_\+pointer\+\_\+xy\+\_\+get}!External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to remote canvases}}
\subsubsection[{ecore\+\_\+evas\+\_\+pointer\+\_\+xy\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void ecore\+\_\+evas\+\_\+pointer\+\_\+xy\+\_\+get (
\begin{DoxyParamCaption}
\item[{const Ecore\+\_\+\+Evas $\ast$}]{ee, }
\item[{{\bf Evas\+\_\+\+Coord} $\ast$}]{x, }
\item[{{\bf Evas\+\_\+\+Coord} $\ast$}]{y}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Evas__Extn_gae70b6bb1242b645745b1dac196311866}


Retrieve the coordinates of the mouse pointer. 


\begin{DoxyParams}{Parameters}
{\em ee} & The Ecore\+\_\+\+Evas containing the pointer \\
\hline
{\em x} & Pointer to integer to store horizontal coordinate. May be {\ttfamily N\+U\+L\+L}. \\
\hline
{\em y} & Pointer to integer to store vertical coordinate. May be {\ttfamily N\+U\+L\+L}.\\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}
\hypertarget{group__Ecore__Evas__Extn_ga1febcd503cc924c5cd2339a5f6f1bd7e}{\index{External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to remote canvases}!ecore\+\_\+evas\+\_\+pointer\+\_\+warp@{ecore\+\_\+evas\+\_\+pointer\+\_\+warp}}
\index{ecore\+\_\+evas\+\_\+pointer\+\_\+warp@{ecore\+\_\+evas\+\_\+pointer\+\_\+warp}!External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to remote canvases}}
\subsubsection[{ecore\+\_\+evas\+\_\+pointer\+\_\+warp}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Bool} ecore\+\_\+evas\+\_\+pointer\+\_\+warp (
\begin{DoxyParamCaption}
\item[{const Ecore\+\_\+\+Evas $\ast$}]{ee, }
\item[{{\bf Evas\+\_\+\+Coord}}]{x, }
\item[{{\bf Evas\+\_\+\+Coord}}]{y}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Evas__Extn_ga1febcd503cc924c5cd2339a5f6f1bd7e}


Retrieve the coordinates of the mouse pointer. 


\begin{DoxyParams}{Parameters}
{\em ee} & The Ecore\+\_\+\+Evas containing the pointer \\
\hline
{\em x} & The horizontal coordinate to move the pointer to \\
\hline
{\em y} & The vertical coordinate to move the pointer to\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily E\+I\+N\+A\+\_\+\+T\+R\+U\+E} on success, E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E on failure.
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}


References E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E.

\hypertarget{group__Ecore__Evas__Extn_ga3f85c3f97c8bead7bfd677f04903a3bd}{\index{External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to remote canvases}!ecore\+\_\+evas\+\_\+pixmap\+\_\+visual\+\_\+get@{ecore\+\_\+evas\+\_\+pixmap\+\_\+visual\+\_\+get}}
\index{ecore\+\_\+evas\+\_\+pixmap\+\_\+visual\+\_\+get@{ecore\+\_\+evas\+\_\+pixmap\+\_\+visual\+\_\+get}!External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to remote canvases}}
\subsubsection[{ecore\+\_\+evas\+\_\+pixmap\+\_\+visual\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void$\ast$ ecore\+\_\+evas\+\_\+pixmap\+\_\+visual\+\_\+get (
\begin{DoxyParamCaption}
\item[{const Ecore\+\_\+\+Evas $\ast$}]{ee}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Evas__Extn_ga3f85c3f97c8bead7bfd677f04903a3bd}


Retrieve the Visual used for pixmap creation. 


\begin{DoxyParams}{Parameters}
{\em ee} & The Ecore\+\_\+\+Evas containing the pixmap\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The Visual which was used when creating the pixmap
\end{DoxyReturn}
\begin{DoxyWarning}{Warning}
If and when this function is called depends on the underlying windowing system. This function should only be called if the Ecore\+\_\+\+Evas was created using {\ttfamily ecore\+\_\+evas\+\_\+software\+\_\+x11\+\_\+pixmap\+\_\+new} or {\ttfamily ecore\+\_\+evas\+\_\+gl\+\_\+x11\+\_\+pixmap\+\_\+new} 
\end{DoxyWarning}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}
\hypertarget{group__Ecore__Evas__Extn_ga2f24aa046034aac29ad7792d9fd9ff9e}{\index{External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to remote canvases}!ecore\+\_\+evas\+\_\+pixmap\+\_\+colormap\+\_\+get@{ecore\+\_\+evas\+\_\+pixmap\+\_\+colormap\+\_\+get}}
\index{ecore\+\_\+evas\+\_\+pixmap\+\_\+colormap\+\_\+get@{ecore\+\_\+evas\+\_\+pixmap\+\_\+colormap\+\_\+get}!External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to remote canvases}}
\subsubsection[{ecore\+\_\+evas\+\_\+pixmap\+\_\+colormap\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} unsigned long ecore\+\_\+evas\+\_\+pixmap\+\_\+colormap\+\_\+get (
\begin{DoxyParamCaption}
\item[{const Ecore\+\_\+\+Evas $\ast$}]{ee}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Evas__Extn_ga2f24aa046034aac29ad7792d9fd9ff9e}


Retrieve the Colormap used for pixmap creation. 


\begin{DoxyParams}{Parameters}
{\em ee} & The Ecore\+\_\+\+Evas containing the pixmap\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The Colormap which was used when creating the pixmap
\end{DoxyReturn}
\begin{DoxyWarning}{Warning}
If and when this function is called depends on the underlying windowing system. This function should only be called if the Ecore\+\_\+\+Evas was created using {\ttfamily ecore\+\_\+evas\+\_\+software\+\_\+x11\+\_\+pixmap\+\_\+new} or {\ttfamily ecore\+\_\+evas\+\_\+gl\+\_\+x11\+\_\+pixmap\+\_\+new} 
\end{DoxyWarning}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}
\hypertarget{group__Ecore__Evas__Extn_gabf21f1c7d93527a5bf7a0f63bbb86101}{\index{External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to remote canvases}!ecore\+\_\+evas\+\_\+pixmap\+\_\+depth\+\_\+get@{ecore\+\_\+evas\+\_\+pixmap\+\_\+depth\+\_\+get}}
\index{ecore\+\_\+evas\+\_\+pixmap\+\_\+depth\+\_\+get@{ecore\+\_\+evas\+\_\+pixmap\+\_\+depth\+\_\+get}!External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to remote canvases}}
\subsubsection[{ecore\+\_\+evas\+\_\+pixmap\+\_\+depth\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} int ecore\+\_\+evas\+\_\+pixmap\+\_\+depth\+\_\+get (
\begin{DoxyParamCaption}
\item[{const Ecore\+\_\+\+Evas $\ast$}]{ee}
\end{DoxyParamCaption}
)}}\label{group__Ecore__Evas__Extn_gabf21f1c7d93527a5bf7a0f63bbb86101}


Retrieve the depth used for pixmap creation. 


\begin{DoxyParams}{Parameters}
{\em ee} & The Ecore\+\_\+\+Evas containing the pixmap\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The depth which was used when creating the pixmap
\end{DoxyReturn}
\begin{DoxyWarning}{Warning}
If and when this function is called depends on the underlying windowing system. This function should only be called if the Ecore\+\_\+\+Evas was created using {\ttfamily ecore\+\_\+evas\+\_\+software\+\_\+x11\+\_\+pixmap\+\_\+new} or {\ttfamily ecore\+\_\+evas\+\_\+gl\+\_\+x11\+\_\+pixmap\+\_\+new} 
\end{DoxyWarning}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}


\subsection{Variable Documentation}
\hypertarget{group__Ecore__Evas__Extn_ga6d5fd3e0ec72dec2c95245de88356bc1}{\index{External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to remote canvases}!E\+C\+O\+R\+E\+\_\+\+E\+V\+A\+S\+\_\+\+E\+X\+T\+N\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+A\+D\+D@{E\+C\+O\+R\+E\+\_\+\+E\+V\+A\+S\+\_\+\+E\+X\+T\+N\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+A\+D\+D}}
\index{E\+C\+O\+R\+E\+\_\+\+E\+V\+A\+S\+\_\+\+E\+X\+T\+N\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+A\+D\+D@{E\+C\+O\+R\+E\+\_\+\+E\+V\+A\+S\+\_\+\+E\+X\+T\+N\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+A\+D\+D}!External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to remote canvases}}
\subsubsection[{E\+C\+O\+R\+E\+\_\+\+E\+V\+A\+S\+\_\+\+E\+X\+T\+N\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+A\+D\+D}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} int E\+C\+O\+R\+E\+\_\+\+E\+V\+A\+S\+\_\+\+E\+X\+T\+N\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+A\+D\+D}}\label{group__Ecore__Evas__Extn_ga6d5fd3e0ec72dec2c95245de88356bc1}


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

\begin{DoxySince}{Since}
1.\+2 
\end{DoxySince}
\hypertarget{group__Ecore__Evas__Extn_ga8fb7ee60a44413172a9dca1305061cf7}{\index{External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to remote canvases}!E\+C\+O\+R\+E\+\_\+\+E\+V\+A\+S\+\_\+\+E\+X\+T\+N\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+D\+E\+L@{E\+C\+O\+R\+E\+\_\+\+E\+V\+A\+S\+\_\+\+E\+X\+T\+N\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+D\+E\+L}}
\index{E\+C\+O\+R\+E\+\_\+\+E\+V\+A\+S\+\_\+\+E\+X\+T\+N\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+D\+E\+L@{E\+C\+O\+R\+E\+\_\+\+E\+V\+A\+S\+\_\+\+E\+X\+T\+N\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+D\+E\+L}!External plug/socket infrastructure to remote canvases@{External plug/socket infrastructure to remote canvases}}
\subsubsection[{E\+C\+O\+R\+E\+\_\+\+E\+V\+A\+S\+\_\+\+E\+X\+T\+N\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+D\+E\+L}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} int E\+C\+O\+R\+E\+\_\+\+E\+V\+A\+S\+\_\+\+E\+X\+T\+N\+\_\+\+C\+L\+I\+E\+N\+T\+\_\+\+D\+E\+L}}\label{group__Ecore__Evas__Extn_ga8fb7ee60a44413172a9dca1305061cf7}


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

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