summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2011-08-17 11:41:14 +0100
committerDave Airlie <airlied@redhat.com>2011-08-17 11:41:14 +0100
commit2f20475edcf089e680c298ef83fbe8879790be0c (patch)
treec03762cbbf1128f7020dd505f66cdbed843146fe
parent754b15567feb9e31c3340913b8415d5d072f60e8 (diff)
imped: fixup remove support
-rw-r--r--drv/drv_imped.h1
-rw-r--r--drv/impedplug.c12
2 files changed, 12 insertions, 1 deletions
diff --git a/drv/drv_imped.h b/drv/drv_imped.h
index 86d15f7c8..ec05e9b80 100644
--- a/drv/drv_imped.h
+++ b/drv/drv_imped.h
@@ -109,6 +109,7 @@ extern _X_EXPORT void impedScreenSetPixmapSize(ScreenPtr pScreen);
extern _X_EXPORT void impedAttachDrvScreen(ScreenPtr pScreen, DrvScreenPtr pDrvScreen);
+extern _X_EXPORT Bool impedRemoveDrvScreen(ScreenPtr pScreen, DrvScreenPtr pDrvScreen);
extern _X_EXPORT Bool impedSetupScreen(int index, ScreenPtr pScreen);
diff --git a/drv/impedplug.c b/drv/impedplug.c
index 0cba69bbc..875371a42 100644
--- a/drv/impedplug.c
+++ b/drv/impedplug.c
@@ -76,10 +76,20 @@ impedAddDrvScreen(ScreenPtr pScreen, DrvScreenPtr new)
}
}
-int impedRemoveDrvScreen(ScreenPtr pScreen, int remove_index)
+Bool impedRemoveDrvScreen(ScreenPtr pScreen, DrvScreenPtr pDrvScreen)
{
impedScreenPrivPtr imped_screen = impedGetScreen(pScreen);
int i;
+ int remove_index = -1;
+
+ for (i = 0; i < imped_screen->num_gpu; i++) {
+ if (imped_screen->gpu[i] == pDrvScreen) {
+ remove_index = i;
+ break;
+ }
+ }
+ if (remove_index == -1)
+ return FALSE;
ErrorF("hot removing GPU %d\n", remove_index);
{