Mike Emmel wrote:
> Attached is the patch for window properties.
> 
> Comments suggestions ?

Code shape is broken as Ville pointed out already,

> Index: src/core/wm.c
> ===================================================================
> RCS file: /cvs/directfb/DirectFB/src/core/wm.c,v
> retrieving revision 1.12
> diff -u -r1.12 wm.c
> --- src/core/wm.c     16 Jul 2006 10:15:29 -0000      1.12
> +++ src/core/wm.c     1 Aug 2006 20:14:02 -0000
> @@ -563,6 +563,7 @@
>  
>       return wm_local->funcs->GetInsets(stack,window,insets);
>  }
> +

but I don't mind cosmetic changes along the way :)

>  /**
>   Give the wm a chance to override the windows configuration 
>  **/
> @@ -652,6 +653,65 @@
>       return ret;
>  }
>  
> +/**
> + * Let the wm set a property on a window 
> + */
> +DFBResult
> +dfb_wm_set_window_property( CoreWindowStack  *stack,
> +                                      CoreWindow       *window,
> +                     char             *key,
> +                     void             *value,
> +                     void             **old_value)
> +{
> +     D_ASSERT( wm_local != NULL );
> +     D_ASSERT( wm_local->funcs != NULL );
> +     D_ASSERT( wm_local->funcs->SetWindowProperty != NULL );
> +
> +     D_ASSERT( stack != NULL );

D_ASSERT( window != NULL );
D_ASSERT( key != NULL );
D_ASSERT( value != NULL );

These were missing :)

> +
> +     return 
> wm_local->funcs->SetWindowProperty(stack,wm_local->data,stack->stack_data,
> +                                                    
> window,window->window_data,
> +                                                    key,value,old_value);
> +}
> +
> +/**
> + * get the wm  property on a window 
> + */
> +DFBResult
> +dfb_wm_get_window_property( CoreWindowStack  *stack,
> +                                      CoreWindow       *window,
> +                     char             *key,
> +                     void             **value)
> +{
> +     D_ASSERT( wm_local != NULL );
> +     D_ASSERT( wm_local->funcs != NULL );
> +     D_ASSERT( wm_local->funcs->GetWindowProperty != NULL );
> +
> +     D_ASSERT( stack != NULL );

D_ASSERT( window != NULL );
D_ASSERT( key != NULL );
D_ASSERT( value != NULL );

> +     return 
> wm_local->funcs->GetWindowProperty(stack,wm_local->data,stack->stack_data,
> +                                                
> window,window->window_data,key,value);
> +}
> +
> +/**
> + * remove th wm  property on a window 
> + */
> +DFBResult
> +dfb_wm_remove_window_property( CoreWindowStack  *stack,
> +                                      CoreWindow       *window,
> +                     char             *key,
> +                     void             **value)
> +{
> +     D_ASSERT( wm_local != NULL );
> +     D_ASSERT( wm_local->funcs != NULL );
> +     D_ASSERT( wm_local->funcs->RemoveWindowProperty != NULL );
> +
> +     D_ASSERT( stack != NULL );

D_ASSERT( window != NULL );
D_ASSERT( key != NULL );
D_ASSERT( value != NULL );

> +     return 
> wm_local->funcs->RemoveWindowProperty(stack,wm_local->data,stack->stack_data,
> +                                                    
> window,window->window_data,key,value);
> +}
> +
>  DFBResult
>  dfb_wm_set_window_config( CoreWindow             *window,
>                            const CoreWindowConfig *config,
> Index: src/core/wm.h
> ===================================================================
> RCS file: /cvs/directfb/DirectFB/src/core/wm.h,v
> retrieving revision 1.11
> diff -u -r1.11 wm.h
> --- src/core/wm.h     16 Jul 2006 10:15:29 -0000      1.11
> +++ src/core/wm.h     1 Aug 2006 20:14:02 -0000
> @@ -185,6 +185,30 @@
>  
>  
>     /** Window **/
> +    DFBResult (*SetWindowProperty)( CoreWindowStack  *stack,
> +                                    void             *wm_data,
> +                                    void             *stack_data,
> +                                                     CoreWindow       
> *window,
> +                                    void             *window_data,
> +                                    char             *key,
> +                                    void             *value,
> +                                    void             **old_value);

I prefer to give return (output) parameters the prefix ret_. I didn't do
that in the past so don't expect it to be in my old code :)


DFBResult (*SetWindowProperty)( CoreWindowStack  *stack,
                                 void             *wm_data,
                                 void             *stack_data,
                                 CoreWindow       *window,
                                 void             *window_data,
                                 char             *key,
                                 void             *value,
                                 void            **ret_old_value );


> +    DFBResult (*GetWindowProperty)( CoreWindowStack  *stack,
> +                                    void             *wm_data,
> +                                    void             *stack_data,
> +                                                     CoreWindow       
> *window,
> +                                    void             *window_data,
> +                                    char             *key,
> +                                    void             **value);

...,
void **ret_value );

> Index: wm/default/default.c
> ===================================================================
> RCS file: /cvs/directfb/DirectFB/wm/default/default.c,v
> retrieving revision 1.31
> diff -u -r1.31 default.c
> --- wm/default/default.c      16 Jul 2006 10:15:29 -0000      1.31
> +++ wm/default/default.c      1 Aug 2006 20:14:04 -0000
> @@ -2795,6 +2795,7 @@
>       return DFB_OK;
>  }
>  
> +
>  static DFBResult
>  wm_preconfigure_window( CoreWindowStack *stack,
>                 void            *wm_data,
> @@ -2806,6 +2807,44 @@
>  }
>  
>  static DFBResult
> +wm_set_window_property( CoreWindowStack *stack,
> +               void            *wm_data,
> +               void            *stack_data,
> +               CoreWindow      *window,
> +               void            *window_data,
> +               char            *key,
> +               void            *value,
> +               void            **old_value)
> +{
> +     return DFB_OK;
> +}

No default implementation, yet?

-- 
Best regards,
   Denis Oliver Kropp

.------------------------------------------.
| DirectFB - Hardware accelerated graphics |
| http://www.directfb.org/                 |
"------------------------------------------"

_______________________________________________
directfb-dev mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to