Added few more stubs so that control reaches to DestroyDevice().
[mesa.git] / src / egl / wayland / wayland-drm / wayland-drm.c
index 0f0a2317c7e6ff842ee14f39a00d2802aa213df3..51cdd2cb845bcebc490e27297ab961c68c750a1b 100644 (file)
 
 #define MIN(x,y) (((x)<(y))?(x):(y))
 
-struct wl_drm {
-       struct wl_display *display;
-       struct wl_global *wl_drm_global;
-
-       void *user_data;
-       char *device_name;
-        uint32_t flags;
-
-       struct wayland_drm_callbacks callbacks;
-
-        struct wl_buffer_interface buffer_interface;
-};
-
 static void
 destroy_buffer(struct wl_resource *resource)
 {
@@ -124,6 +111,10 @@ drm_create_buffer(struct wl_client *client, struct wl_resource *resource,
                  uint32_t stride, uint32_t format)
 {
         switch (format) {
+        case WL_DRM_FORMAT_ABGR2101010:
+        case WL_DRM_FORMAT_XBGR2101010:
+        case WL_DRM_FORMAT_ARGB2101010:
+        case WL_DRM_FORMAT_XRGB2101010:
         case WL_DRM_FORMAT_ARGB8888:
         case WL_DRM_FORMAT_XRGB8888:
         case WL_DRM_FORMAT_YUYV:
@@ -221,6 +212,31 @@ bind_drm(struct wl_client *client, void *data, uint32_t version, uint32_t id)
        wl_resource_set_implementation(resource, &drm_interface, data, NULL);
 
        wl_resource_post_event(resource, WL_DRM_DEVICE, drm->device_name);
+
+       if (drm->callbacks.is_format_supported(drm->user_data,
+                                              WL_DRM_FORMAT_ARGB2101010)) {
+               wl_resource_post_event(resource, WL_DRM_FORMAT,
+                                      WL_DRM_FORMAT_ARGB2101010);
+       }
+
+       if (drm->callbacks.is_format_supported(drm->user_data,
+                                              WL_DRM_FORMAT_XRGB2101010)) {
+               wl_resource_post_event(resource, WL_DRM_FORMAT,
+                                      WL_DRM_FORMAT_XRGB2101010);
+       }
+
+       if (drm->callbacks.is_format_supported(drm->user_data,
+                                              WL_DRM_FORMAT_ABGR2101010)) {
+               wl_resource_post_event(resource, WL_DRM_FORMAT,
+                                      WL_DRM_FORMAT_ABGR2101010);
+       }
+
+       if (drm->callbacks.is_format_supported(drm->user_data,
+                                              WL_DRM_FORMAT_XBGR2101010)) {
+               wl_resource_post_event(resource, WL_DRM_FORMAT,
+                                      WL_DRM_FORMAT_XBGR2101010);
+       }
+
        wl_resource_post_event(resource, WL_DRM_FORMAT,
                               WL_DRM_FORMAT_ARGB8888);
        wl_resource_post_event(resource, WL_DRM_FORMAT,
@@ -244,22 +260,9 @@ bind_drm(struct wl_client *client, void *data, uint32_t version, uint32_t id)
            wl_resource_post_event(resource, WL_DRM_CAPABILITIES, capabilities);
 }
 
-struct wl_drm_buffer *
-wayland_drm_buffer_get(struct wl_drm *drm, struct wl_resource *resource)
-{
-       if (resource == NULL)
-               return NULL;
-
-        if (wl_resource_instance_of(resource, &wl_buffer_interface,
-                                    &drm->buffer_interface))
-               return wl_resource_get_user_data(resource);
-        else
-               return NULL;
-}
-
 struct wl_drm *
 wayland_drm_init(struct wl_display *display, char *device_name,
-                 struct wayland_drm_callbacks *callbacks, void *user_data,
+                 const struct wayland_drm_callbacks *callbacks, void *user_data,
                  uint32_t flags)
 {
        struct wl_drm *drm;