KILL HIMMMMMMM!!!!!!!!!!!!!!!!!

On 12/30/2013 07:59 AM, Daniel Juyung Seo wrote:
> On Mon, Dec 30, 2013 at 12:44 PM, ChunEon Park <her...@naver.com> wrote:
>
>> no doc, no use case. :(
>>
>>
> +1. Agreed.
>
> Daniel Juyung Seo (SeoZ)
>
>
>> ------------------------------------
>> -Regards, Hermet-
>>
>> -----Original Message-----
>> From: "Carsten Haitzler"<ras...@rasterman.com>
>> To: <g...@lists.enlightenment.org>;
>> Cc:
>> Sent: 2013-12-26 (목) 19:00:32
>> Subject: [EGIT] [core/efl] master 01/01: ecore-x - add call to create a
>> permanent window that is not deleted on exit
>>
>> raster pushed a commit to branch master.
>>
>>
>> http://git.enlightenment.org/core/efl.git/commit/?id=eb8b643bf29646f8323c3bb49e7e70392dc6574b
>>
>> commit eb8b643bf29646f8323c3bb49e7e70392dc6574b
>> Author: Carsten Haitzler (Rasterman) <raster>@rasterman.com>
>> Date:   Thu Dec 26 19:01:23 2013 +0900
>>
>>      ecore-x - add call to create a permanent window that is not deleted on
>> exit
>> ---
>>   src/lib/ecore_x/Ecore_X.h                1 +
>>   src/lib/ecore_x/xcb/ecore_xcb_window.c  82
>> ++++++++++++++++++++++++++++++++++
>>   src/lib/ecore_x/xlib/ecore_x_window.c   68 ++++++++++++++++++++++++++++
>>   3 files changed, 151 insertions(+)
>>
>> diff --git a/src/lib/ecore_x/Ecore_X.h b/src/lib/ecore_x/Ecore_X.h
>> index 1241b24..c5ed5f3 100644
>> --- a/src/lib/ecore_x/Ecore_X.h
>> +++ b/src/lib/ecore_x/Ecore_X.h
>> @@ -1409,6 +1409,7 @@ EAPI int
>> ecore_x_window_argb_get(Ecore_X_Window win);
>>   EAPI Ecore_X_Window
>>   ecore_x_window_manager_argb_new(Ecore_X_Window parent, int x, int y, int
>> w, int h);
>>   EAPI Ecore_X_Window            ecore_x_window_argb_new(Ecore_X_Window
>> parent, int x, int y, int w, int h);
>>   EAPI Ecore_X_Window
>>   ecore_x_window_override_argb_new(Ecore_X_Window parent, int x, int y, int
>> w, int h);
>> +EAPI Ecore_X_Window
>>   ecore_x_window_permanent_create(Ecore_X_Window parent, Ecore_X_Atom
>> unique_atom); /* @since 1.9 */
>>   EAPI Ecore_X_Window            ecore_x_window_input_new(Ecore_X_Window
>> parent, int x, int y, int w, int h);
>>   EAPI void                      ecore_x_window_configure(Ecore_X_Window
>> win, Ecore_X_Window_Configure_Mask mask, int x, int y, int w, int h, int
>> border_width, Ecore_X_Window sibling, int stack_mode);
>>   EAPI void                      ecore_x_window_cursor_set(Ecore_X_Window
>> win, Ecore_X_Cursor c);
>> diff --git a/src/lib/ecore_x/xcb/ecore_xcb_window.c
>> b/src/lib/ecore_x/xcb/ecore_xcb_window.c
>> index 087c391..094f145 100644
>> --- a/src/lib/ecore_x/xcb/ecore_xcb_window.c
>> +++ b/src/lib/ecore_x/xcb/ecore_xcb_window.c
>> @@ -310,6 +310,88 @@ ecore_x_window_override_argb_new(Ecore_X_Window
>> parent,
>>      return win;
>>   }
>>
>> +EAPI Ecore_X_Window
>> +ecore_x_window_permanent_create(Ecore_X_Window parent,
>> +                                Ecore_X_Atom unique_atom)
>> +{
>> +   xcb_connection_t *conn;
>> +   Ecore_X_Window win, win2, realwin;
>> +   uint32_t mask, mask_list[9];
>> +   xcb_get_property_reply_t *reply;
>> +   xcb_get_property_cookie_t cookie;
>> +   unsigned long ldata, *datap;
>> +
>> +   LOGFN(__FILE__, __LINE__, __FUNCTION__);
>> +   conn = xcb_connect(name, NULL);
>> +   if (!conn) return 0;
>> +
>> +   xcb_grab_server(conn);
>> +   cookie = xcb_get_property_unchecked(conn, 0, parent, unique_atom,
>> +                                       ECORE_X_ATOM_WINDOW, 0,
>> 0x7fffffff);
>> +   reply = xcb_get_property_reply(conn, cookie, NULL);
>> +   if (reply)
>> +     {
>> +        if ((reply->type == ECORE_X_ATOM_WINDOW) && (reply->format == 32)
>> &&
>> +            (reply->value_len == 1) &&
>> +            ((datap = (unsigned long *)xcb_get_property_value(reply))))
>> +          {
>> +             win = (Ecore_X_Window)(*datap);
>> +             free(reply);
>> +             cookie = xcb_get_property_unchecked(conn, 0, win,
>> unique_atom,
>> +                                                 ECORE_X_ATOM_WINDOW, 0,
>> 0x7fffffff);
>> +             reply = xcb_get_property_reply(conn, cookie, NULL);
>> +             if (reply)
>> +               {
>> +                  if ((reply->type == ECORE_X_ATOM_WINDOW) &&
>> (reply->format == 32) &&
>> +                      (reply->value_len == 1) &&
>> +                      ((datap = (unsigned long
>> *)xcb_get_property_value(reply))))
>> +                    {
>> +                       win2 = (Ecore_X_Window)(*datap);
>> +                       free(reply);
>> +                       if (win2 == win) realwin = win;
>> +                    }
>> +                  else free(reply);
>> +               }
>> +          }
>> +        else free(reply);
>> +     }
>> +   if (realwin != 0)
>> +     {
>> +        xcb_ungrab_server(conn);
>> +        xcb_flush(conn);
>> +        xcb_disconnect(conn);
>> +        return realwin;
>> +     }
>> +   mask = (XCB_CW_BACK_PIXMAP  XCB_CW_BORDER_PIXEL  XCB_CW_BIT_GRAVITY
>> +           XCB_CW_WIN_GRAVITY  XCB_CW_BACKING_STORE
>> +           XCB_CW_OVERRIDE_REDIRECT  XCB_CW_SAVE_UNDER  XCB_CW_EVENT_MASK
>> +           XCB_CW_DONT_PROPAGATE);
>> +   mask_list[0] = XCB_BACK_PIXMAP_NONE;
>> +   mask_list[1] = 0;
>> +   mask_list[2] = XCB_GRAVITY_NORTH_WEST;
>> +   mask_list[3] = XCB_GRAVITY_NORTH_WEST;
>> +   mask_list[4] = XCB_BACKING_STORE_NOT_USEFUL;
>> +   mask_list[5] = 1;
>> +   mask_list[6] = 0;
>> +   mask_list[7] = XCB_EVENT_MASK_NO_EVENT;
>> +   mask_list[8] = XCB_EVENT_MASK_NO_EVENT;
>> +   win = xcb_generate_id(conn);
>> +   xcb_create_window(conn, XCB_COPY_FROM_PARENT,
>> +                     win, parent, -77, -77, 7, 7, 0,
>> +                     XCB_WINDOW_CLASS_INPUT_OUTPUT,
>> +                     XCB_COPY_FROM_PARENT, mask, mask_list);
>> +   ldata = (unsigned long)win;
>> +   xcb_change_property(conn, XCB_PROP_MODE_REPLACE, win, unique_atom,
>> +                       ECORE_X_ATOM_WINDOW, 32, 1, (unsigned char
>> *)ldata);
>> +   xcb_change_property(conn, XCB_PROP_MODE_REPLACE, parent, unique_atom,
>> +                       ECORE_X_ATOM_WINDOW, 32, 1, (unsigned char
>> *)ldata);
>> +   xcb_set_close_down_mode(conn, XCB_CLOSE_DOWN_RETAIN_PERMANENT);
>> +   xcb_ungrab_server(conn);
>> +   xcb_flush(conn);
>> +   xcb_disconnect(conn);
>> +   return win;
>> +}
>> +
>>   /**
>>    * @defgroup Ecore_X_Window_Destroy_Group X Window Destroy Functions
>>    * @ingroup Ecore_X_Group
>> diff --git a/src/lib/ecore_x/xlib/ecore_x_window.c
>> b/src/lib/ecore_x/xlib/ecore_x_window.c
>> index ac0f34a..e4c9e74 100644
>> --- a/src/lib/ecore_x/xlib/ecore_x_window.c
>> +++ b/src/lib/ecore_x/xlib/ecore_x_window.c
>> @@ -1786,3 +1786,71 @@ ecore_x_window_override_argb_new(Ecore_X_Window
>> parent,
>>   #endif /* ifdef ECORE_XRENDER */
>>   }
>>
>> +EAPI Ecore_X_Window
>> +ecore_x_window_permanent_create(Ecore_X_Window parent,
>> +                                Ecore_X_Atom unique_atom)
>> +{
>> +   Display *disp;
>> +   Window win, win2, realwin = 0;
>> +   Atom type_ret;
>> +   int format_ret;
>> +   unsigned long ldata, bytes_after, num_ret, *datap;
>> +   unsigned char *prop_ret;
>> +
>> +   LOGFN(__FILE__, __LINE__, __FUNCTION__);
>> +   disp = XOpenDisplay(DisplayString(_ecore_x_disp));
>> +   if (!disp) return 0;
>> +
>> +   XGrabServer(disp);
>> +   if (XGetWindowProperty(disp, parent, unique_atom, 0, 0x7fffffff,
>> +                          False, XA_WINDOW, &type_ret, &format_ret,
>> +                          &num_ret, &bytes_after, &prop_ret))
>> +     {
>> +        if (prop_ret)
>> +          {
>> +             if ((format_ret == 32) && (type_ret == XA_WINDOW) &&
>> +                 (num_ret == 1))
>> +               {
>> +                  datap = (unsigned long *)prop_ret;
>> +                  win = (Window)(*datap);
>> +                  XFree(prop_ret);
>> +                  if (XGetWindowProperty(disp, win, unique_atom, 0,
>> 0x7fffffff,
>> +                                         False, XA_WINDOW, &type_ret,
>> &format_ret,
>> +                                         &num_ret, &bytes_after,
>> &prop_ret))
>> +                    {
>> +                       if (prop_ret)
>> +                         {
>> +                            if ((format_ret == 32) && (type_ret ==
>> XA_WINDOW) &&
>> +                                (num_ret == 1))
>> +                              {
>> +                                 datap = (unsigned long *)prop_ret;
>> +                                 win2 = (Window)(*datap);
>> +                                 XFree(prop_ret);
>> +                                 if (win2 == win) realwin = win;
>> +                              }
>> +                            else XFree(prop_ret);
>> +                         }
>> +                    }
>> +               }
>> +             else XFree(prop_ret);
>> +          }
>> +     }
>> +   if (realwin != 0)
>> +     {
>> +        XUngrabServer(disp);
>> +        XFlush(disp);
>> +        XCloseDisplay(disp);
>> +        return realwin;
>> +     }
>> +   win = XCreateSimpleWindow(disp, parent, -77, -77, 7, 7, 0, 0, 0);
>> +   ldata = (unsigned long)win;
>> +   XChangeProperty(disp, win, unique_atom, XA_WINDOW, 32,
>> +                   PropModeReplace, (unsigned char *)(&ldata), 1);
>> +   XChangeProperty(disp, parent, unique_atom, XA_WINDOW, 32,
>> +                   PropModeReplace, (unsigned char *)(&ldata), 1);
>> +   XSetCloseDownMode(disp, RetainPermanent);
>> +   XUngrabServer(disp);
>> +   XFlush(disp);
>> +   XCloseDisplay(disp);
>> +   return win;
>> +}
>>
>> --
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Rapidly troubleshoot problems before they affect your business. Most IT
>> organizations don't have a clear picture of how application performance
>> affects their revenue. With AppDynamics, you get 100% visibility into your
>> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics
>> Pro!
>> http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
>> _______________________________________________
>> enlightenment-devel mailing list
>> enlightenment-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>>
> ------------------------------------------------------------------------------
> Rapidly troubleshoot problems before they affect your business. Most IT
> organizations don't have a clear picture of how application performance
> affects their revenue. With AppDynamics, you get 100% visibility into your
> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
> http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel



------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to